在实践中遇到了业务批量插入数据的场景比较多,简单的总结了一下,希望能帮到有需要的同学 。
文章插图
自己整理的JAVA架构学习视频和大厂项目底层知识点,需要的同学欢迎私信我【资料】发给你~一起学习进步!1.mApper.xml文件sql语句如下:
<mappers><mapper resource="mapper/Mapper.xml"/></mappers>
2.Mybatis-config.xml文件中需要加上下面的配置:
/*** 批量插入* @param linkLists* @return*/int insertBatch(List<LinkList> linkLists);
3.dao层代码:
/*** 批量插入* @param linkLists* @return*/int insertBatch(List<LinkList> linkLists);
4.service层代码如下:
@Overridepublic int insertBatch(List<LinkList> linkLists) {return linkListDao.insertBatch(linkLists);}
5.impl接口实现:
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());}
6.controller层实现代码如下:
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());}
总结【Mybatis支持哪些插件类型?面试中80%人答不全】至此就可以实现简单的批量插入了,数据量少的时候,性能优势不是很明显,可以使用单条插入;当数据量很大的时候,此时就能凸显批量插入的优势 。
推荐阅读
- 红茶茶叶有哪些品种,白茶有哪些品种
- 可以去湿气的茶有哪些,大麦茶去湿气吗
- 汉朝和亲的公主后来都怎样了 汉代和亲公主有哪些
- 适合开学发的朋友圈有哪些?
- 限时点券活动换哪些比较划算?
- 解酒的茶有哪些,茶与解酒
- 吃鹰嘴豆上火吗?鹰嘴豆的营养价值有哪些?
- 吃豆馅上火吗?豆馅的营养价值有哪些?
- 吃鲳鱼上火吗?鲳鱼的营养价值有哪些?
- 吃小豆粥上火吗?小豆粥的营养价值有哪些?