室内设计小程序开发-创造独特的空间体验
1020
2023-03-02
Mybatis批量提交实现步骤详解
简介:mybatis的批量操作减少数据库连接次数
一、mapper 使用foreach 遍历
批量insert:
INSERT INTO emp(ename,gender,email,did)
VALUES
(#{emp.eName},#{emp.gender},#{emp.email},#{emp.dept.id})
批量update:
UPDATE green_beans
stock=#{bean.stock}
beanUid = #{bean.beanUid}
二、使用 mybhttp://atis ExecutorType.BATCH
使用步骤:
(1)在全局配置文件applcationContext.xml中加入
(2)在service实现中添加:
@Autowired
private SqlSession sqlSession;
//批量保存员工
@Override
public Integer batchEmp() {
// TODO Auto-generated method stub
//批量保存执行前时间
long start=System.currentTimeMillis();
EmployeeMapper mapper= sqlSession.getMapper(EmployeeMapper.class);
for (int i = 0; i < 10000; i++) {
mapper.addEmp(new Employee(UUID.randomUUID().toString().substring(0,5),"b","1"));
}
long end= System.currentTimeMillis();
long time2= end-start;
//批量保存执行后的时间
System.out.println("执行时长"+time2);
return (int) time2;
}
demo:
@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:
public interface EmployeeMapper {
//批量保存员工
puFzORDklwAblic Long addEmp(Employee employee);
}
mapper.xml :
insert into employee(lastName,email,gender) values(#{lastName},#{email},#{gender})
insert into employee(lastName,email,gender)
values(#{lastName},#{email},#{gender})
三、总结:
方式一、需要修改数据库属性添加allowMutiQueries=true,例如:jdbc.url=jdbc:mysql://localhost:3306/mybatis?allowMultiQueries=true
方式二、需要开启事务提交,在applcationContext.xml中添加BATCH
版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。
发表评论
暂时没有评论,来抢沙发吧~