mysql添加自增主键--方法1

本文介绍了如何在MyBatis中通过selectKey标签获取自增主键和非自增主键。对于自增主键,使用order="AFTER"配合LAST_INSERT_ID()函数;对于非自增主键,使用order="BEFORE"并生成UUID作为主键值。
摘要由CSDN通过智能技术生成


有时候新增一条数据,知道新增成功即可,但是有时候,需要这条新增数据的主键,以便逻辑使用,再将其查询出来明显不符合要求,效率也变低了。

这时候,通过一些设置,mybatis可以将insert的数据的主键返回,直接拿到新增数据的主键,以便后续使用。

这里主要说的是selectKey标签

设计表的时候有两种主键,一种自增主键,一般为int类型,一种为非自增的主键,例如用uuid等。

首先说自增类型的主键。

1  映射xml中添加如下代码,注释写的很清楚了,不多做赘述。

[html] view plain copy
  1. <!--新增信息,并拿到新增信息的表主键信息。  
  2.     新增数据,得到主键的外层写法没什么特别,跟普通的insert一样。只不过里面加了selectKey-->  
  3. <insert id="insertAndgetkey" parameterType="com.soft.mybatis.model.User">  
  4.     <!--selectKey  会将 SELECT LAST_INSERT_ID()的结果放入到传入的model的主键里面,  
  5.         keyProperty 对应的model中的主键的属性名,这里是 user 中的id,因为它跟数据库的主键对应  
  6.         order AFTER 表示 SELECT LAST_INSERT_ID() 在insert执行之后执行,多用与自增主键,  
  7.               BEFORE 表示 SELECT LAST_INSERT_ID() 在insert执行之前执行,这样的话就拿不到主键了,  
  8.                     这种适合那种主键不是自增的类型  
  9.         resultType 主键类型 -->  
  10.     <selectKey keyProperty="id" order="AFTER" resultType="java.lang.Integer">  
  11.         SELECT LAST_INSERT_ID()  
  12.     </selectKey>  
  13.     insert into t_user (username,password,create_date) values(#{username},#{password},#{createDate})  
  14. </insert>  
2 接口 UserDao
[java] view plain copy
  1. /** 
  2.  * 新增用户信息,并得到新增数据的主键 
  3.  *      主键自增 
  4.  * @return 
  5.  */  
  6. int insertAndGeyKey(User user);  

3 实现类 UserDaoImpl

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值