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)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • 激活码pycharm_通用破解码

    激活码pycharm_通用破解码,https://javaforall.net/100143.html。详细ieda激活码不妨到全栈程序员必看教程网一起来了解一下吧!

    2022年3月16日
    32
  • mysql时序性数据库_时序数据库入门[通俗易懂]

    mysql时序性数据库_时序数据库入门[通俗易懂]数据库的模型包含关系型、key-value型、Document型等很多种,那么为什么新型的时序数据库成为监控数据存储的新宠呢?下面就会从为什么需要时序数据库?时序数据库的数据结构两个方面来介绍一下时序数据库。1.为什么需要时序数据库1.1时序数据特点时序数据有如下几个特点:基本上是插入操作较多且无更新的需求数据带有时间属性,且数据量随着时间递增插入数据多,每秒钟插入需要可到达千万甚至是上…

    2022年10月5日
    1
  • ribbon自定义负载均衡策略,应用所有服务_dubbo的负载均衡策略

    ribbon自定义负载均衡策略,应用所有服务_dubbo的负载均衡策略Ribbon默认的负载均衡策略默认的有下面几种:我们也可以自定义负载均衡策略:修改springcloud-consumer-dept-80的主启动类:下面开始编写自定义配置类MySelfRule,但这个类不能乱放!官方文档给出警告:这个自定义的类不能放在@ComponentScan所扫描的当前包以及子包下,否则我们自定义的这个配置类就会被所有的Ribbon客户端所共享,也就是我们达…

    2022年10月13日
    0
  • Navicat 15 for MySQL 激活码(破解版激活)

    Navicat 15 for MySQL 激活码(破解版激活),https://javaforall.net/100143.html。详细ieda激活码不妨到全栈程序员必看教程网一起来了解一下吧!

    2022年3月16日
    176
  • Django(23)Django限制请求装饰器

    Django(23)Django限制请求装饰器前言有时候,我们想要限制访问的请求方法,比如我们希望用户只能通过get方式请求,post不允许,那么我们可以采用装饰器的方式,django已经为我们提供了内置的装饰器限制请求装饰器Django内

    2022年7月28日
    12
  • Java常用的输入输出语句「建议收藏」

    Java常用的输入输出语句「建议收藏」对于经常上机刷题的来说,首先得解决输入输出方法,Java的输入输出流在Java学习过程的后面部分才会接触,但是我们可以掌握一些简单的,常用的输入输出方法首先输出大家最熟悉的莫过于输出方法,直接用System.out.println()或者System.out.print()了下面一个实例1234567publicclassMain{    publicstaticvoidmain(Str…

    2022年5月26日
    56

发表回复

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

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