温馨提示×

温馨提示×

您好,登录后才能下订单哦!

密码登录×
登录注册×
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》

Mybatis如何使用ExecutorType.BATCH

发布时间:2022-03-25 10:51:31 来源:亿速云 阅读:2528 作者:小新 栏目:web开发

这篇文章主要为大家展示了“Mybatis如何使用ExecutorType.BATCH”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“Mybatis如何使用ExecutorType.BATCH”这篇文章吧。

使用ExecutorType.BATCH

Mybatis内置的ExecutorType有3种,默认为simple,该模式下它为每个语句的执行创建一个新的预处理语句,单条提交sql;而batch模式重复使用已经预处理的语句,并且批量执行所有更新语句,显然batch性能将更优; 但batch模式也有自己的问题,比如在Insert操作时,在事务没有提交之前,是没有办法获取到自增的id,这在某型情形下是不符合业务要求的

具体用法如下

//批量保存方法测试 @Test   public void testBatch() throws IOException{     SqlSessionFactory sqlSessionFactory = getSqlSessionFactory();     //可以执行批量操作的sqlSession     SqlSession openSession = sqlSessionFactory.openSession(ExecutorType.BATCH);     //批量保存执行前时间     long start = System.currentTimeMillis();     try {         EmployeeMapper mapper = openSession.getMapper(EmployeeMapper.class);         for (int i = 0; i < 1000; i++) {             mapper.addEmp(new Employee(UUID.randomUUID().toString().substring(0, 5), "b", "1"));         }         openSession.commit();         long end = System.currentTimeMillis();         //批量保存执行后的时间         System.out.println("执行时长" + (end - start));         //批量 预编译sql一次==》设置参数==》10000次==》执行1次   677         //非批量  (预编译=设置参数=执行 )==》10000次   1121     } finally {         openSession.close();     } }

mapper和mapper.xml如下

public interface EmployeeMapper {        //批量保存员工     Long addEmp(Employee employee); }
<mapper namespace="com.jourwon.mapper.EmployeeMapper"      <!--批量保存员工 -->     <insert id="addEmp">         insert into employee(lastName,email,gender)         values(#{lastName},#{email},#{gender})     </insert> </mapper>

以上是“Mybatis如何使用ExecutorType.BATCH”这篇文章的所有内容,感谢各位的阅读!相信大家都有了一定的了解,希望分享的内容对大家有所帮助,如果还想学习更多知识,欢迎关注亿速云行业资讯频道!

向AI问一下细节

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

AI