当前位置:主页 > java教程 > Mybatis批量提交

Mybatis批量提交实现步骤详解

发布:2022-06-26 07:51:51 59


给寻找编程代码教程的朋友们精选了Mybatis相关的编程文章,网友周弘厚根据主题投稿了本篇教程内容,涉及到Mybatis、批量提交、Mybatis批量提交相关内容,已被610网友关注,如果对知识点想更进一步了解可以在下方电子资料中获取。

Mybatis批量提交

简介:mybatis的批量操作减少数据库连接次数

一、mapper 使用foreach 遍历

  批量insert:

<insert id="addEmpsBatch">
   INSERT INTO emp(ename,gender,email,did)
   VALUES
   <foreach collection="emps" item="emp" separator=",">
   (#{emp.eName},#{emp.gender},#{emp.email},#{emp.dept.id})
   </foreach>
 </insert>

  批量update:

<update id="updateNewStock" parameterType="java.util.List">
<foreach collection="list" item="bean" index="index" open="" close="" separator=";">
UPDATE green_beans
<set>
stock=#{bean.stock}
</set>
<where>
beanUid = #{bean.beanUid}
</where>
</foreach>
</update>

二、使用 mybatis ExecutorType.BATCH

使用步骤:

(1)在全局配置文件applcationContext.xml中加入

<!-- 配置一个可以批量执行的sqlSession -->
    <bean id="sqlSession" class="org.mybatis.spring.SqlSessionTemplate">
      <constructor-arg name="sqlSessionFactory" ref="sqlSessionFactory"></constructor-arg>
       <constructor-arg name="executorType" value="BATCH"></constructor-arg>
     </bean>

(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 {  
  //批量保存员工
  public Long addEmp(Employee employee);
  }

mapper.xml :

<mapper namespace="com.agesun.mybatis.dao.EmployeeMapper"
   <!--批量保存员工 -->
  <insert id="addEmp">
    insert into employee(lastName,email,gender)
    values(#{lastName},#{email},#{gender})
  </insert>
</mapper>

三、总结:

方式一、需要修改数据库属性添加allowMutiQueries=true,例如:jdbc.url=jdbc:mysql://localhost:3306/mybatis?allowMultiQueries=true

方式二、需要开启事务提交,在applcationContext.xml中添加BATCH

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持码农之家。


相关文章

  • MyBatis一级缓存需要注意的地方

    发布:2020-02-01

    这篇文章主要给大家介绍了关于MyBatis一级缓存避坑的相关资料,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学


  • 解决mybatis一对多关联查询多条数据只显示一条的问题

    发布:2022-04-24

    这篇文章主要介绍了解决mybatis一对多关联查询多条数据只显示一条的问题,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧


  • MyBatis insert操作插入数据之后返回插入记录的id

    发布:2022-06-22

    给网友朋友们带来一篇关于MyBatis的教程,今天小编就为大家分享一篇关于MyBatis插入数据之后返回插入记录的id,小编觉得内容挺不错的,现在分享给大家,具有很好的参考价值,需要的朋友一起跟随小编来看看吧


  • 深入理解Mybatis分页插件使用方法

    发布:2020-02-29

    这篇文章主要为大家详细介绍了Mybatis分页插件的使用方法,具有一定的参考价值,感兴趣的小伙伴们可以参考一下


  • Mybatis-Plus自动填充示例代码

    发布:2020-03-22

    这篇文章主要介绍了Mybatis-Plus自动填充的实现示例,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧


  • Spring Boot整合mybatis多数据源用法

    发布:2020-01-07

    这篇文章主要介绍了Spring Boot 整合mybatis 使用多数据源的实现方法,需要的朋友可以参考下


  • 详解mybatis foreach collection示例

    详解mybatis foreach collection示例

    发布:2022-06-14

    给网友们整理关于mybatis的教程,这篇文章主要介绍了详解mybatis foreach collection的相关资料,需要的朋友可以参考下


  • spring boot+mybatis 多数据源切换实例讲解

    发布:2020-06-04

    下面小编就为大家带来一篇spring boot+mybatis 多数据源切换(实例讲解)。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧


网友讨论