难题解决:Mycat数据库中间件+Mybatis批量插入数据并返回行记录的所有主键ID

Posted 精诚所至,金石为开

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了难题解决:Mycat数据库中间件+Mybatis批量插入数据并返回行记录的所有主键ID相关的知识,希望对你有一定的参考价值。

 一、mybatis的版本必须为3.3.1及其以上

项目所依赖的mybatis的版本必须为3.3.1及其以上,低版本的不行,保证hap项目的依赖的mybatis的jar的版本必需为需要的版本:

 

二、在Dao层不能使用@Param注解,且Mapper.xml文件中使用list变量接收Dao层中的集合

 数据库库结构设计:

 

对应的Dto层:

对应的Mapper接口:

对应的Mapper.xml文件:

具体代码如下,需要使用到mycat的注解,指定该插入为批量数据插入:

<insert id="insertByBatch">
/*!mycat:catlet=io.mycat.route.sequence.BatchInsertSequence */
insert into test_sharding_by_accounting_date (rule_code,name,accounting_date)
values
<foreach collection="list" item="item" index="index" separator=",">
(#{item.ruleCode,jdbcType=DECIMAL},#{item.name,jdbcType=VARCHAR},#{item.accountingDate,jdbcType=DATE})
</foreach>
</insert>

三、Mycat为分库表做全局序列的配置

schema.xml文件:

server.xml文件的全局序列方式设置为本地读取:

 

 sequence_conf.properties文件的配置:

 

以上是关于难题解决:Mycat数据库中间件+Mybatis批量插入数据并返回行记录的所有主键ID的主要内容,如果未能解决你的问题,请参考以下文章

Mycat和Sharding-jdbc的区别Mycat分片joinMycat分页中的坑Mycat注解

MES解决方案 | MyCat:开源分布式数据库中间件

基于mycat分布式数据库解决方案的学习汇总

MyBatis自定义插件实现按日期分表功能

DBLE解决了MyCAT的哪些坑?

SpringBoot+MyBatis+MySQL读写分离