在mysql数据库中支持批量插入,所以只要配置ugeneratedkeys和keyproperty就可以批量插入并返回主键了。
比如有个表camera,里面有camerano,chanindex,cameraname这三个字段,其中camerano是自增主键。
下面是批量插入的dao层接口:
void batchinrtcameras(@param("list") list<camera> cameras);
<inrt id="batchinrtcameras" ugene456啥意思ratedkeys="true" keyproperty="camerano"> inrt into camera (chanindex,cameraname) values <foreach collection="list" item="c" parator=","> (#{c.chanindex},#{c.cameraname}) </foreach></inrt>
@inrt("<script>inrt into camera (chanind独木舟经典语录ex,cameraname) values " + "<foreach collection='list' item='c' parator=','>(#{c.chanindex},#{c.camerana一束花me})</foreach></script>")@options(ugeneratedkeys = true, keyproperty = "camerano")void batchinrtcameras(@param("list") list<camera> cameras);
注意:@param里必须写成list, foreach的collection也必须写成list,否则批量插入后会报错说找不到”camerano”字段,而无法返回主键。
通过上面的xml形式或者注解形式的配置(我这是spring boot的项目,引入的mybatis-spring-boot-starter,采用的是注解形式),就可以批量插入并返回主键了,主键会被设置到camera对象的camerano字段中。
cameramapper.batchinrtcameras(cameras);for(camera camera : cameras){ system.out.println(camera.getcamerano());}
执行批量插入时,需确保至少有一条待插入的记录,否则会导致sql有误而报错。
int inrtbatchurreturnid(list<ur> urs);
也可以在形参前面加上@param(“xxxx”)
<inrt id="inrtbatchurreturnid" keyproperty="urid" ugeneratedkeys="true"> inrt into message (ur_id, ur_name, ur_type, ur_passwd, ur_phone,ur_pic,ur_address) values <foreach collection="list" item="item" open="(" clo=")" parator=","> #{item.urid,jdbctype=integer}, #{item.urname,jdbctype=varchar}, #{item.urtype,jdbctype=tinyint}, #{item.urpasswd,jdbctype=varchar}, #{item.urphone,jdbctype=varchar}, #{item.urpic,jdbctype=varchar},#{item.uraddress上诉期限,jdbctype=varchar} </foreach></inrt>
执行完这条语句之后,原来的urs就会自动带上主键urid。
以上为个人经验,希望能给大家一个参考,也希望大家多多支持www.887551.com。
本文发布于:2023-04-04 00:32:54,感谢您对本站的认可!
本文链接:https://www.wtabcd.cn/fanwen/zuowen/ea4b1102322967049d01863e2696bd04.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文word下载地址:mybatis实现批量插入并返回主键(xml和注解两种方法).doc
本文 PDF 下载地址:mybatis实现批量插入并返回主键(xml和注解两种方法).pdf
留言与评论(共有 0 条评论) |