Mybatis支持哪些插件类型?面试中80%人答不全

在实践中遇到了业务批量插入数据的场景比较多,简单的总结了一下,希望能帮到有需要的同学 。

Mybatis支持哪些插件类型?面试中80%人答不全

文章插图
 
自己整理的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%人答不全】至此就可以实现简单的批量插入了,数据量少的时候,性能优势不是很明显,可以使用单条插入;当数据量很大的时候,此时就能凸显批量插入的优势 。
 


    推荐阅读