在实践中遇到了业务批量插入数据的场景比较多,简单的总结了一下,希望能帮到有需要的同学。
<mappers>
<mapper resource="mapper/Mapper.xml"/>
</mappers>
/**
* 批量插入
* @param linkLists
* @return
*/
int insertBatch(List<LinkList> linkLists);
/**
* 批量插入
* @param linkLists
* @return
*/
int insertBatch(List<LinkList> linkLists);
@Override
public int insertBatch(List<LinkList> linkLists) {
return linkListDao.insertBatch(linkLists);
}
if (size > 1) {//批量插入
long beginTime = System.currentTimeMillis(); System.out.println("multi begin time:" + beginTime);
SqlSession sqlSession = sqlSessionTemplate.getSqlSessionFactory().openSession(ExecutorType.BATCH, false);//关闭session的自动提交;
try { int result = sqlSession.insert("com.netease.klqa.report.dao.LinkListDao.insertBatch", insertData);
sqlSession.commit(); // System.out.println("dyy" + result);
} finally { sqlSession.close(); } System.out.println("multi end time:" + (System.currentTimeMillis() - beginTime));
} else if (size == 1) {//单条插入
System.out.println("one begin time:" + System.currentTimeMillis());
LinkList linkList = insertData.get(0);
if (linkList != null) {
linkList.setVersionId(versionId); linkListService.insert(linkList); } System.out.println("one end time:" + System.currentTimeMillis());
}
if (size > 1) {//批量插入
long beginTime = System.currentTimeMillis(); System.out.println("multi begin time:" + beginTime);
SqlSession sqlSession = sqlSessionTemplate.getSqlSessionFactory().openSession(ExecutorType.BATCH, false);//关闭session的自动提交;
try { int result = sqlSession.insert("com.netease.klqa.report.dao.LinkListDao.insertBatch", insertData);
sqlSession.commit(); // System.out.println("dyy" + result);
} finally { sqlSession.close(); } System.out.println("multi end time:" + (System.currentTimeMillis() - beginTime));
} else if (size == 1) {//单条插入
System.out.println("one begin time:" + System.currentTimeMillis());
LinkList linkList = insertData.get(0);
if (linkList != null) {
linkList.setVersionId(versionId); linkListService.insert(linkList); } System.out.println("one end time:" + System.currentTimeMillis());
}
至此就可以实现简单的批量插入了,数据量少的时候,性能优势不是很明显,可以使用单条插入;当数据量很大的时候,此时就能凸显批量插入的优势。
来源:网易工程师--段云雁
有任何问题欢迎留言交流~
整理总结不易,如果觉得这篇文章有意思的话,欢迎转发、收藏,给我一些鼓励~
有想看的内容或者建议,敬请留言!
最近利用空余时间整理了一些精选Java架构学习视频和大厂项目底层知识点,需要的同学欢迎私信我发给你~一起学习进步!有任何问题也欢迎交流~
Java日记本,每日存档超实用的技术干货学习笔记,每天陪你前进一点点~