当有时我们插入一条数据时,由于id很可能是自动生成的,如果我们想要返回这条刚插入的id怎么办呢。

在mysql数据中我们可以在insert下添加一个selectKey用以指定返回的类型和值:
    方法一:
    <insert id="addUser" parameterType="com.zhl.pojo.User">
   <selectKey resultType="java.lang.Integer" order="AFTER" keyProperty="id"> 
        SELECT LAST_INSERT_ID() AS ID   
    </selectKey> 
    INSERT INTO 
    userinfo (name ,password, age, gender, email) 
    VALUES(#{name:VARCHAR} ,#{password:VARCHAR} ,#{age:INTEGER} ,
       #{gender:INTEGER} ,#{email:VARCHAR})
    </insert>
其中resultType表示返回的类型。ID就是返回的刚插入的ID。
 
在oracle中类似selectKey如下:
<selectKey resultType="java.lang.Integer" order="BEFORE" keyProperty="id"> 
            SELECT LOGS_SEQ.nextval AS ID FROM DUAL 
</selectKey>
   方法二:
    <insert id="addUser" parameterType="com.zhl.pojo.User" useGeneratedKeys="true" keyProperty="id">
    INSERT INTO userinfo (name ,password, age, gender, email) 
    VALUES(#{name:VARCHAR} ,#{password:VARCHAR} ,#{age:INTEGER} ,
       #{gender:INTEGER},#email:VARCHAR})
    </insert>
 
 
   查看返回id的具体java代码:
   public void addUser(){
   user.setPassword(user.getName());
   UserServiceImpl userService = new UserServiceImpl();
   PrintWriter w = null;
   try {
      w = ServletActionContext.getResponse().getWriter();
   } catch (IOException e) {
   // TODO Auto-generated catch block
   e.printStackTrace();
   }
   // 执行插入操作
   int count = userService.addUser(user);
   //  执行完插入操作后,刚才的那个user中id就已经有值了
   System.out.println("count="+count+"  userId="+user.getId());
   if(count!=0){
      w.write("{\"success\":\"success\"}");
   }
   else{
      w.write("{\"success\":\"fail\"}");
   }
}
   输出:count=1  userId=59

mybatis中返回自动生成的id的更多相关文章

  1. C#运用存储过程新增一条记录并返回自动生成的ID

    @Hcy黄灿奕:http://blog.sina.com.cn/iihcy 前言: 1.存储过的好处: 存储过程相对于其他的数据库访问方法有以下的优点: (1)重复使用.存储过程可以重复使用,从而可以 ...

  2. 基于eclipse的mybatis映射代码自动生成的插件

    基于eclipse的mybatis映射代码自动生成的插件 分类: JAVA 数据库 工具相关2012-04-29 00:15 2157人阅读 评论(9) 收藏 举报 eclipsegeneratori ...

  3. 基于eclipse的mybatis映射代码自动生成的插件http://blog.csdn.net/fu9958/article/details/7521681

    基于eclipse的mybatis映射代码自动生成的插件 分类: JAVA 数据库 工具相关2012-04-29 00:15 2157人阅读 评论(9) 收藏 举报 eclipsegeneratori ...

  4. Eclipse 使用mybatis generator插件自动生成代码

    Eclipse 使用mybatis generator插件自动生成代码 标签: mybatis 2016-12-07 15:10 5247人阅读 评论(0) 收藏 举报 .embody{ paddin ...

  5. IDEA自动生成序列化ID

    1.安装 serialVersionUID 插件: 2.设置你的IDEA为检查序列化ID 3.重启IDEA(有的版本可以不重启) 4.在需要自动生成序列化ID的类中使用快捷键:Alt+Insert 转 ...

  6. springboot整合mybatis,利用mybatis-genetor自动生成文件

    springboot整合mybatis,利用mybatis-genetor自动生成文件 项目结构: xx 实现思路: 1.添加依赖 <?xml version="1.0" e ...

  7. eclipse中如何自动生成构造函数

    eclipse中如何自动生成构造函数 eclipse是一个非常好的IDE,我在写java程序的时候使用eclipse感觉开发效率很高.而且有很多的快捷和简便方式供大家使用,并且能直接生成class文件 ...

  8. pojo类自动生成序列化ID

    自动生成序列化ID

  9. Intellij idea用快捷键自动生成序列化id

    ntellij idea用快捷键自动生成序列化id 类继承了Serializable接口之后,使用alt+enter快捷键自动创建序列化id 进入setting→inspections→seriali ...

随机推荐

  1. etcd原理详解代码剖析

    1 架构 从etcd的架构图中我们可以看到,etcd主要分为四个部分. HTTP Server: 用于处理用户发送的API请求以及其它etcd节点的同步与心跳信息请求. Store:用于处理etcd支 ...

  2. 【AI测试】人工智能 (AI) 测试--第二篇

    测试用例 人工智能 (AI) 测试 或者说是 算法测试,主要做的有三件事. 收集测试数据 思考需要什么样的测试数据,测试数据的标注 跑测试数据 编写测试脚本批量运行 查看数据结果 统计正确和错误的个数 ...

  3. jpg与jpeg的区别在哪

    JPG文件的优点是体积小巧,并且兼容性好,因为大部分的程序都能读取这种文件,这是因为JPG格式不仅是一个工业标准格式,而且更是web的标准文件格式.JPG文件如此拥有如此便利的条件,难怪得到了业余玩家 ...

  4. 自定义 OpenShift s2i 镜像与模板——OracleJDK8

    本文目标 由于 OpenShift 官方提供的镜像与模板(OpenJDK8)不完全满足业务需要: 不包含飞行记录功能.只有 OpenJDK11 以上才被 Oracle 开源 生成堆 dump 很大很慢 ...

  5. 快速从零开始整合SSM,小白包会(1)

    整合SSM,关键就是几个xml的配置. 准备: 1.   Idea(配置好tomcat,可以安装插件freeMybatis,提高效率,安装插件不难,百度经验就有) 2.   下载好数据库MySql,以 ...

  6. [loj2339]通道

    类似于[loj2553] 对第一棵树边分治,对第二棵树建立虚树,并根据直径合并的性质来处理第三棵树(另外在第三棵树中计算距离需要使用dfs序+ST表做到$o(1)$优化) 总复杂度为$o(n\log^ ...

  7. [noi110]翘课

    发现加边操作不好处理,因此考虑先加完所有边后删边. 删去一对边x到y,如果两者中有一个不翘课显然没有意义,那么如果都翘课了那么就对他们进行判断,如果无法翘课就继续搜下去. 这样的时间复杂度看上去似乎是 ...

  8. linux的ip文件参数说明

    TYPE=Ethernet # 网卡类型:为以太网 PROXY_METHOD=none # 代理方式:关闭状态 BROWSER_ONLY=no # 只是浏览器:否 BOOTPROTO=dhcp # 网 ...

  9. C#使用Thrift作为RPC框架入门(三)之三层架构

    前言 这是我们讲解Thrift框架的第三篇文章,前两篇我们讲了Thrift作为RPC框架的基本用法以及架构的设计.为了我们更好的使用和理解Thrift框架,接下来,我们将来学习一下Thrift框架提供 ...

  10. SQL 跨实例操作

    SQL 跨实例操作 我使用的是 OpenDataSource 函数,假设你要在其他机器上访问 192.168.0.1 上的数据库: SELECT A.[Name], B.[SkillName], B. ...