方法有很多,参考 mysql函数之六:mysql插入数据后返回自增ID的方法,last_insert_id(),selectkey

这里记录一下工作中自己用到的selectkey方法的详细过程。

pojo类:

  1. public class Client {
  2. /**
  3. * 客户id
  4. */
  5. @Id
  6. private Integer id;
  7.  
  8. /**
  9. * 客户名称
  10. */
  11. private String name;
  12.  
  13. //其他的一些域自己补充,对应get/set方法也要添加
  14.  
  15. /**
  16. * 获取客户id
  17. *
  18. * @return id - 客户id
  19. */
  20. public Integer getId() {
  21. return id;
  22. }
  23.  
  24. /**
  25. * 设置客户id
  26. *
  27. * @param id 客户id
  28. */
  29. public void setId(Integer id) {
  30. this.id = id;
  31. }
  32.  
  33. /**
  34. * 获取客户名称
  35. *
  36. * @return name - 客户名称
  37. */
  38. public String getName() {
  39. return name;
  40. }
  41.  
  42. /**
  43. * 设置客户名称
  44. *
  45. * @param name 客户名称
  46. */
  47. public void setName(String name) {
  48. this.name = name;
  49. }
  50. }

xml映射文件:

keyProperty设置为pojo类的ID域, order为BEFORE则在insert方法之前调用,AFTER则在insert方法之后调用

  1.   <insert id="insertSelective" parameterType="com.zhouyufan.client.pojo.Client">
  2. <selectKey keyProperty="id" order="AFTER" resultType="java.lang.Integer">
  3. select LAST_INSERT_ID()
  4. </selectKey>
  5. insert into client
  6. <trim prefix="(" suffix=")" suffixOverrides=",">
  7. <if test="name != null and name != ''">name,</if>
  8. <if test="test1 != null">test1,</if>
  9. <if test="test2 != null">test2,</if>
  10. </trim>
  11. <trim prefix="values (" suffix=")" suffixOverrides=",">
  12. <if test="name != null and name != ''">#{name,jdbcType=VARCHAR},</if>
  13. <if test="test1 != null">#{test1,jdbcType=TINYINT},</if>
  14. <if test="test2 != null">#{test2,jdbcType=TINYINT},</if>
  15. </trim>
  16. </insert>

在Java方法中调用:

  1. // count仍然为insert操作返回的结果
  2. int count = clientMapperCustom.insertSelective(client);
  3. // 自增主键在client的id域里,通过client.getId();获取自增主键
  4. int autoClientid = client.getId();

Mybatis插入数据返回自增主键的更多相关文章

  1. Mybatis:插入数据返回自增主键

    使用Mybatis作为工具连接MySQL,要求在插入数据之后返回自增主键 一开始也很迷惑,Mybatis使用insert之后,成功返回的是1,失败会报错或返回0,主键去哪找来 后来知道Mybatis可 ...

  2. MyBatis 插入时返回自增主键

    XML <insert id="insert" parameterType="com.stone.model.Person"> <!-- se ...

  3. Mybatis+Mysql插入数据库返回自增主键id值的三种方法

    一.场景: 插入数据库的值需要立即得到返回的主键id进行下一步程序操作 二.解决方法: 第一种:使用通用mapper的插入方法 Mapper.insertSelective(record): 此方法: ...

  4. mybatis+sqlserver中返回非自增主键

    首先把实体类贴出来(这里只贴出属性,其它的就是getter和setter方法): public class Around {     private String xccd;  //对应主键      ...

  5. SpringBoot集成tk mybatis插入数据,回显主键为null

    实体信息如下 @Data public class ApiCertificate{ @Id @GeneratedValue(generator = "JDBC") private ...

  6. MyBatis插入时候获取自增主键方法

    方法一:(Oralce不支持这种写法) useGeneratedkeys 默认值为 false,含义:设置是否使用JDBC的getGenereatedKeys方法获取主键并赋值到keyProperty ...

  7. postgresql实现插入数据返回当前的主键ID

    <insert id="addUser" parameterType="com.liupan.user"> <selectKey keyPro ...

  8. mybatis插入数据后返回自增主键ID详解

    1.场景介绍: ​ 开发过程中我们经常性的会用到许多的中间表,用于数据之间的对应和关联.这个时候我们关联最多的就是ID,我们在一张表中插入数据后级联增加到关联表中.我们熟知的mybatis在插入数据后 ...

  9. Mybatis批量插入返回自增主键(转)

    我们都知道Mybatis在插入单条数据的时候有两种方式返回自增主键: 1.对于支持生成自增主键的数据库:useGenerateKeys和keyProperty. 2.不支持生成自增主键的数据库:< ...

随机推荐

  1. HDU 4417 离线+树状数组

    Super Mario Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)Total ...

  2. BZOJ1105 [POI2007]石头花园SKA 贪心

    [POI2007]石头花园SKA Time Limit: 20 Sec  Memory Limit: 162 MBSubmit: 776  Solved: 237[Submit][Status][Di ...

  3. 2015/9/5 Python基础(9):条件和循环

    条件语句Python中的if语句如下: if expression: expr_true_suite 其中expression可以用布尔操作符and, or 和 not实现多重判断条件.如果一个复合语 ...

  4. 修改Maven仓库地址

    在%USERPROFILE%\.m2\settings.xml例如:C:\Users\LongShu\.m2\settings.xml 可以自定义Maven的一些参数, 复制%M2_HOME%\con ...

  5. 【51NOD-0】1130 N的阶乘的长度 V2(斯特林近似)

    [算法]数学 [题解]斯特林公式: #include<cstdio> #include<algorithm> #include<cmath> using names ...

  6. 【BZOJ】3626 [LNOI2014]LCA

    [算法]树链剖分+线段树(区间加值,区间求和) [题解]http://hzwer.com/3891.html 中间不要取模不然相减会出错. 血的教训:线段树修改时标记下传+上传,查询时下传.如果修改时 ...

  7. python学习笔记(二)之python简单实践

    1 安装python开发环境 Linux环境下自动安装好了python,可以通过以下命令更新到python最新版本. #echo "alias python=/usr/bin/python3 ...

  8. 【洛谷 P1452】 Beauty Contest (二维凸包,旋转卡壳)

    题目链接 旋转卡壳模板题把. 有时间再补总结吧. #include <cstdio> #include <cmath> #include <algorithm> u ...

  9. 结合promise对原生fetch的两个then用法理解

    前言:该问题是由于看到fetch的then方法的使用,产生的疑问,在深入了解并记录对promise的个人理解 首先看一下fetch请求使用案例: 案例效果:点击页面按钮,请求当前目录下的arr.txt ...

  10. hdu 1869 六度分离(最短路floyd)

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1869 六度分离 Time Limit: 5000/1000 MS (Java/Others)    M ...