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)原创文章,如若转载请标明出处,谢谢!

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

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

【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛

【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...

(0)
blank

相关推荐

  • ubuntu clion激活码【2021.8最新】[通俗易懂]

    (ubuntu clion激活码)这是一篇idea技术相关文章,由全栈君为大家提供,主要知识点是关于2021JetBrains全家桶永久激活码的内容IntelliJ2021最新激活注册码,破解教程可免费永久激活,亲测有效,下面是详细链接哦~https://javaforall.cn/100143.html1STL5S9V8F-eyJsa…

  • ip route 添加默认网关_用route命令添加永久路由

    ip route 添加默认网关_用route命令添加永久路由[color=green]Route在本地IP路由表中显示和修改条目。使用不带参数的route可以显示帮助。语法route[-f][-p][Command[Destination][maskNetmask][Gateway][metricMetric]][ifInterface]]参数-f清除所有不是主路由(网掩码为255.255.255…

  • VUE父子组件之间的传值,以及兄弟组件之间的传值;

    VUE父子组件之间的传值,以及兄弟组件之间的传值;一、Vue父子组件之间传值vue使用中,经常会用到组件,好处是:1、如果有一个功能很多地方都会用到,写成一个组件就不用重复写这个功能了;2、页面内容会简洁一些;方便管控;子组件的传值是通过props来传递数据,$emit来触发事件;下面是一个简单的子组件props传值:父组件的部分:首先引入组件,在组件上绑定你要传给组件的值;然后,在组件里通过props来接收你从父页面传…

  • .pkl文件读取_pkl是什么文件格式

    .pkl文件读取_pkl是什么文件格式1.根据网上查阅的读取方法importpicklefile=open(“./dataset-cornell-length10-filter1-vocabSize40000.pkl”,”rb”)data=pickle.load(file)print(data)file.close()在这里,注意在读取的使用的是”rb”,也就是二进制文件格式,而”r”是普通格式的读取用print输…

  • 太极图正确画法_来氏太极图的画法及六行太极图的演示

    太极图正确画法_来氏太极图的画法及六行太极图的演示本来,我已打算停中发文,但是这一篇涉及到我一个重要的思想,这就是我对明代来知德的“来氏太极图”有了重要的理解,我根据它形成了我的六行太极理论,于是我还是决定把它公布出来。我尝试很多办法把水火金木土风的六行的元素融入到太极图中,它既要能符合太极的原理,又要能符合六行的原理,但又要使用它最简单化,可始终无果,有一天,我看到了明代理学家来知德的《来瞿唐先生圆图》,忽然恍然大悟,来瞿唐先生的“来氏太极图”…

  • 邮件服务器软件选择,3款windows下的免费邮件服务器软件

    MacallanMailSolutionMacallanMailSolution是一款POP3、IMAP、SMTP、HTTP(webMail)邮件服务器软件,它还包括了防垃圾邮件机制。MMS免费邮件服务器(SMTP/POP3/IMAP/HTTP/NEWS/SSL/Tunnel)支持MicrosoftWindowsXP™和MicrosoftWindows200…

发表回复

您的电子邮箱地址不会被公开。

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