mybatis批量插入并返回主键(xml和注解两种方式)

mybatis批量插入在mysql数据库中支持批量插入,所以只要配置useGeneratedKeys和keyProperty就可以批量插入并返回主键了。比如有个表camera,里面有cameraNo,chanIndex,cameraName这三个字段,其中cameraNo是自增主键。下面是批量插入的Dao层接口:voidbatchInsertCameras(@Param(“li…

大家好,又见面了,我是你们的朋友全栈君。

mybatis批量插入

在mysql数据库中支持批量插入,所以只要配置useGeneratedKeys和keyProperty就可以批量插入并返回主键了。

比如有个表camera,里面有cameraNo,chanIndex,cameraName这三个字段,其中cameraNo是自增主键。

下面是批量插入的Dao层接口:

void batchInsertCameras(@Param("list") List<Camera> cameras);

xml形式:

<insert id="batchInsertCameras" useGeneratedKeys="true" keyProperty="cameraNo">
    insert into camera (chanIndex,cameraName)
    values
    <foreach collection="list" item="c" separator=",">
        (#{c.chanIndex},#{c.cameraName})
    </foreach>
</insert>

注解形式:

@Insert("<script>insert into camera (chanIndex,cameraName) values " +
        "<foreach collection='list' item='c' separator=','>(#{c.chanIndex},#{c.cameraName})</foreach></script>")
@Options(useGeneratedKeys = true, keyProperty = "cameraNo")
void batchInsertCameras(@Param("list") List<Camera> cameras);

注意:@Param里必须写成list, foreach的collection也必须写成list,否则批量插入后会报错说找不到”cameraNo”字段,而无法返回主键。

通过上面的xml形式或者注解形式的配置(我这是spring boot的项目,引入的mybatis-spring-boot-starter,采用的是注解形式),就可以批量插入并返回主键了,主键会被设置到Camera对象的cameraNo字段中。

cameraMapper.batchInsertCameras(cameras);
for(Camera camera : cameras){
    System.out.println(camera.getCameraNo());
}

mybatis批量插入并返回主键(xml和注解两种方式)

执行批量插入时,需确保至少有一条待插入的记录,否则会导致sql有误而报错。

此为博主(yjclsx)原创文章,如若转载请标明出处,谢谢!

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/127049.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • 打包的技巧图解(手机软件打包)

    我们打包APP需要用到HBuilder,所以先讲解如何安装使用HBuilder的下载与安装HBuilder的官网下载地址:https://www.dcloud.io/点击DOWNLOAD后会弹出如上显示的两种版本下载Windows版和MacOS版根据我们电脑版本下载即可,我们一定要下载标准版哦(正式版中的)我这里是Windows系统,所以我选择的是window版下载完是一个压缩包右击压缩一下即可打开文件夹后找到如下HBuilderX.exe文件双击即可运行为了方便我们

    2022年4月17日
    64
  • java 中级面试题_java中级面试题[通俗易懂]

    java 中级面试题_java中级面试题[通俗易懂]本帖最后由唯我独赞mo于2015-11-1222:47编辑1、java中wait和sleep有什么区别?多线程条件下如何保证数据安全?答:最大区别是等待时wait会释放锁,而sleep会一直持有锁,wait通常用于线程时交互,sleep通常被用于暂停执行。2、java中volatile和synchronized有什么区别?1.volatile本质是在告诉jvm当前变量在寄存器(工作内存…

    2022年10月12日
    3
  • 1310-全国-中国古代文学史(二)「建议收藏」

    1310-全国-中国古代文学史(二)「建议收藏」1310-全国-中国古代文学史(二)总分:100一、单选题(共30题,共30分)1、苏舜钦的诗歌风格是()(1分)A:豪犷雄放B:平淡瘦劲C:生新瘦硬D:​沉博绝丽2、我国最早的话本小说总集是嘉靖年间洪楩编辑刊刻的《六十家小说》,又称为()(1分)A:《古今小说》B:《清平山堂话本》C:《今古奇观》D:《型世言》3、徐渭《四声猿》中最杰出的一部作品是()(1分)A:《狂鼓史渔阳三弄》B:《玉禅师翠乡一梦》C:《雌木兰替父从军》D:《女状元辞凰得凤》4、被称为“昆曲之

    2022年5月18日
    50
  • Ural 1025-Democrary in Danger

    Ural 1025-Democrary in Danger

    2021年9月14日
    46
  • adb连接安卓设备_安卓adb命令

    adb连接安卓设备_安卓adb命令局域网连接方式adb其他命令用法获取椭圆边界条件

    2025年7月1日
    4
  • 千万别让这些举动断送了你的职业前程-好文共分享[通俗易懂]

    千万别让这些举动断送了你的职业前程-好文共分享

    2022年2月7日
    44

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号