一.问题背景
最近做项目时,要求在分布式调度平台XXL-JOB中进行批量接口的开发,在调试业务流程时考虑使用mybatis批量插表,听说效率比较高,试了一下,还是很好用的,效率方面就没测试时间性能等指标了。
二.解决方法
(1)首先将得到的数据封装成List<Entity>类型,然后在Mapper.java文件中:
int insertForeach(List<Entity> record);
(2)在mapper.xml文件中书写sql语句
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd" >
<mapper namespace="com.XXX.Mapper">
<insert id="insertForeach" parameterType="java.util.List" useGeneratedKeys="false">
insert into info_table
( SID,CONTRACT_NUM,DUE_DATE,LOAN_DATE)
values
<foreach collection="list" item="item" index="index" separator=",">
(
#{item.sid,jdbcType=VARCHAR},
#{item.contractNum,jdbcType=VARCHAR},
#{item.dueDate,jdbcType=VARCHAR},
#{item.loanDate,jdbcType=VARCHAR}
)
</foreach>
</insert>
</mapper>
(3)实体类entity缺省,就按照表中字段自己造一个就可以了。