mybatis插入数据后如何返回新增数据的id值

网友投稿 545 2022-07-23


目录1、自增主键情况下插入数据获取自增主键值2、主键非自增的情况下获取主键值3、keyColumn作用总结

1、自增主键情况下插入数据获取自增主键值

mybatis为我们提供了一个方法,能够插入数据时获取自动生成的值,并且把取的值赋值给实体类的某一属性

设置方法:

要求:主键必须是自增的

SQL语句

useGeneratedKehttp://ys = true  //是否返回自增主键值

keyProperty = “xxx”  //将值赋给哪个属性,这个属性是方法参数中的

此时就是插入数据的实体类点.getId()可以得到

2、主键非自增的情况下获取主键值

一般我们使用来实现。一个块中只能有一个

下面我们了解一下selectKey中的属性

resultType:这个我们就不用解释了,返回类型

order:它有两个取值:1、BEFORE在添加之前查询 2、AFTER在添加之后查询  //这两个都是全大写

keyProperty:将取值赋值给方法参数,如果方法参数是实体类,一般赋值给实体类的字段

keyColumn:对应表的列名

一个selectKey中必须要有 resultType,order,keyProperty

after示例:查询最后一次添加的主键

http:// select last_insert_id() //查询最后一次添加的主键,mysql函数

insert into dept(id,deptname) values(#{id},#{deptname})

before示例:假设Id不是自增长,我们希望在insert之前获取mysql的UUID添加到数据表作为主键Id

select uuid() as id

insert into dept(id,name) values(#{id},#{name})

3、keyColumn作用

问题定义:有时候我们希望keyProperty返回的个数超过1的时候,能不能插入数据的时候返回多个值

1、把selectKey的结果赋值给keyProperty的各个属性

2、赋值规则:keyProperty和keColumn的列数相对应:1对1,2对2…

select cid,cname from Category limit 1;

insert into dept(id,name) values (#{id},#{name})

总结


版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:swagger配置正式环境中不可访问的问题
下一篇:Java中的异常处理(try,catch,finally,throw,throws)
相关文章

 发表评论

暂时没有评论,来抢沙发吧~