项目场景:
java使用ibatis作为持久层框架时如何一次性插入多条数据
问题描述
正常插入一条数据的代码是这样的
mapper.insert(model)
问题分析:
这样单条插入是没有问题,问题是遇到多条要连续插入数据的时候循环执行会占用很长的处理时间,要不停的和db连接断开。
解决方案:
首先在mapper中继承InsertListMapper,例如
import tk.mybatis.mapper.additional.insert.InsertListMapper;
public interface CardBookMapper extends Mapper<CardBook>, InsertListMapper<CardBook> {
/**
* 查询数据
* @param paramMap
* @return
*/
List<CardBook> selectCardBookListByParam(@Param("paramMap") HashMap paramMap);
}
这样在使用mapper时就可以直接插入列表数据了
mapper.
insertList(modelList)
当然还有另一种方式 ,就是将list数据传入的mybatis后,直接使用xml循环写法将数据插入
<insert id="addcardbook" parameterType="java.util.Arraylist">
insert into cardbook(id,name,state,remark) values
<foreach collection="list" item="obj" index="index" separator=",">
(#{obj.id},#{obj.name},#{obj.state},#{obj.remark})
</foreach>
</insert>
这种方式必须保证传入的参数类型要和db数据类型匹配。