标签:添加 sage 一个人 rop lan 解锁 lis 个人 use
对于mysql表中主键设置我自动增长,当我们插入一条记录的时候,id会自动增长,而我们又想得到这个id ,用于另一张表的插入,我们怎样获取这个id呢?有的人通过max(id) 来获取,这样是不合理的,如果另外一个人恰巧在你执行select max(id)获取之前,插入一条记录,那么它的id就变了。而mysql又不存在锁表的功能,所以我们可以通过LAST_INSERT_ID 来获取。
对于mybatis
1 <!-- 新增应用 --> 2 <insert id="addApplication" parameterType="com.bxy.entity.application.Application" 3 useGeneratedKeys="true" keyProperty="id"> 4 insert into vrv_application_list 5 ( 6 appname, 7 apptype, 8 iconpath, 9 filepath, 10 filesize, 11 pic1 12 ) 13 values 14 ( 15 #{appname}, 16 #{apptype}, 17 #{iconpath}, 18 #{filepath}, 19 #{filesize}, 20 #{pic1} 21 ) 22 <selectKey resultType="java.lang.Integer" order="AFTER" 23 keyProperty="id"> 24 SELECT LAST_INSERT_ID() 25 </selectKey>
通过上面的方式,我就把最新插入的一条id,绑定返回到我的实体Application上了,前提是你的Application实体里一定有id这个属性。不然会报错。
当然如果你的parameterType=”java.util.Map” 的话,也是可以的,就不需要做什么多余的,会自动绑定到Map上 ,例如:
1 <!-- 添加消息 --> 2 <insert id="addMessage" parameterType="java.util.Map" 3 useGeneratedKeys="true" keyProperty="id"> 4 insert into vrv_push_message_tab 5 ( 6 type, 7 title, 8 message, 9 create_id, 10 create_time, 11 force_open 12 ) 13 values 14 ( 15 #{type}, 16 #{title}, 17 #{message}, 18 #{create_id}, 19 now(), 20 #{force_open} 21 ) 22 <selectKey resultType="java.lang.Integer" order="AFTER" 23 keyProperty="id"> 24 SELECT LAST_INSERT_ID() 25 </selectKey> 26 </insert>
在java代码里只需要通过下面的方式获取就可以了
1 int id = addMessage(map);
标签:添加 sage 一个人 rop lan 解锁 lis 个人 use
原文地址:https://www.cnblogs.com/haw2106/p/9279597.html