亚洲激情专区-91九色丨porny丨老师-久久久久久久女国产乱让韩-国产精品午夜小视频观看

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

利用怎么實現一個Mybatis批量提交功能

發布時間:2020-12-08 14:46:15 來源:億速云 閱讀:599 作者:Leah 欄目:開發技術

本篇文章為大家展示了利用怎么實現一個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&#63;allowMultiQueries=true

方式二、需要開啟事務提交,在applcationContext.xml中添加BATCH

上述內容就是利用怎么實現一個Mybatis批量提交功能,你們學到知識或技能了嗎?如果還想學到更多技能或者豐富自己的知識儲備,歡迎關注億速云行業資訊頻道。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

金昌市| 大厂| 甘南县| 南郑县| 靖江市| 斗六市| 静乐县| 乌鲁木齐县| 平塘县| 桂阳县| 确山县| 沧源| 西丰县| 嘉黎县| 惠来县| 葫芦岛市| 梁平县| 呼图壁县| 蛟河市| 织金县| 黄大仙区| 吴桥县| 桓台县| 太仓市| 德兴市| 汶上县| 鹤岗市| 绥棱县| 鞍山市| 阜城县| 庄浪县| 上林县| 乾安县| 搜索| 宁远县| 长治市| 新竹县| 腾冲县| 佛冈县| 舒兰市| 梧州市|