最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Mybatis批量提交實現(xiàn)步驟詳解

 更新時間:2020年12月08日 11:24:18   作者:北方有魚  
這篇文章主要介紹了Mybatis批量提交實現(xiàn)步驟詳解,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下

簡介:mybatis的批量操作減少數(shù)據(jù)庫連接次數(shù)

一、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中加入

<!-- 配置一個可以批量執(zhí)行的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實現(xiàn)中添加:

  @Autowired
  private SqlSession sqlSession;

 

 //批量保存員工
  @Override
  public Integer batchEmp() {
    // TODO Auto-generated method stub
  
      //批量保存執(zhí)行前時間
      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;
      //批量保存執(zhí)行后的時間
      System.out.println("執(zhí)行時長"+time2); 
    return (int) time2;
    
  }

demo:

@Test //批量保存方法測試
  public void testBatch() throws IOException{
    SqlSessionFactory sqlSessionFactory=getSqlSessionFactory();
    //可以執(zhí)行批量操作的sqlSession
    SqlSession openSession=sqlSessionFactory.openSession(ExecutorType.BATCH);
    
    //批量保存執(zhí)行前時間
    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();
    //批量保存執(zhí)行后的時間
    System.out.println("執(zhí)行時長"+(end-start));
    //批量 預(yù)編譯sql一次==》設(shè)置參數(shù)==》10000次==》執(zhí)行1次  677
    //非批量 (預(yù)編譯=設(shè)置參數(shù)=執(zhí)行 )==》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>

三、總結(jié):

方式一、需要修改數(shù)據(jù)庫屬性添加allowMutiQueries=true,例如:jdbc.url=jdbc:mysql://localhost:3306/mybatis?allowMultiQueries=true

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

以上就是本文的全部內(nèi)容,希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。

相關(guān)文章

  • SWT JFace 小制作 文本閱讀器

    SWT JFace 小制作 文本閱讀器

    SWT JFace 小制作 文本閱讀器
    2009-06-06
  • java實現(xiàn)彈球小游戲

    java實現(xiàn)彈球小游戲

    這篇文章主要為大家詳細(xì)介紹了java實現(xiàn)彈球小游戲,文中示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2021-06-06
  • java poi導(dǎo)出圖片到excel示例代碼

    java poi導(dǎo)出圖片到excel示例代碼

    這篇文章主要介紹java poi如何導(dǎo)出圖片到excel,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2019-03-03
  • intellij idea修改maven配置時總是恢復(fù)默認(rèn)配置的解決方法idea版本(2020.2.x)

    intellij idea修改maven配置時總是恢復(fù)默認(rèn)配置的解決方法idea版本(2020.2.x)

    這篇文章主要介紹了intellij idea修改maven配置時總是恢復(fù)默認(rèn)配置的解決方法idea版本(2020.2.x),本文給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2020-08-08
  • Java實現(xiàn)把窗體隱藏到系統(tǒng)托盤方法

    Java實現(xiàn)把窗體隱藏到系統(tǒng)托盤方法

    這篇文章主要介紹了Java實現(xiàn)把窗體隱藏到系統(tǒng)托盤方法,本文直接給出核心功能代碼,需要的朋友可以參考下
    2015-05-05
  • Java面試題沖刺第十五天--設(shè)計模式

    Java面試題沖刺第十五天--設(shè)計模式

    這篇文章主要為大家分享了最有價值的三道關(guān)于設(shè)計模式的面試題,涵蓋內(nèi)容全面,包括數(shù)據(jù)結(jié)構(gòu)和算法相關(guān)的題目、經(jīng)典面試編程題等,感興趣的小伙伴們可以參考一下
    2021-08-08
  • Java Swing JTextArea文本區(qū)域的實現(xiàn)示例

    Java Swing JTextArea文本區(qū)域的實現(xiàn)示例

    這篇文章主要介紹了Java Swing JTextArea文本區(qū)域的實現(xiàn)示例,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2019-12-12
  • java 用泛型參數(shù)類型構(gòu)造數(shù)組詳解及實例

    java 用泛型參數(shù)類型構(gòu)造數(shù)組詳解及實例

    這篇文章主要介紹了java 用泛型參數(shù)類型構(gòu)造數(shù)組詳解及實例的相關(guān)資料,需要的朋友可以參考下
    2017-02-02
  • Mybatis-Plus insertBatch執(zhí)行緩慢的原因查詢

    Mybatis-Plus insertBatch執(zhí)行緩慢的原因查詢

    這篇文章主要介紹了Mybatis-Plus insertBatch執(zhí)行緩慢的原因查詢,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2023-11-11
  • 帶有@Transactional和@Async的循環(huán)依賴問題的解決

    帶有@Transactional和@Async的循環(huán)依賴問題的解決

    這篇文章主要介紹了帶有@Transactional和@Async的循環(huán)依賴問題的解決,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2020-04-04

最新評論

葵青区| 鹿泉市| 渝中区| 松潘县| 牟定县| 连云港市| 镇江市| 达日县| 商城县| 斗六市| 平果县| 徐州市| 雅江县| 哈密市| 长乐市| 内黄县| 中宁县| 肇东市| 宜兴市| 沂水县| 钟祥市| 郓城县| 旺苍县| 厦门市| 集贤县| 邹平县| 新安县| 平塘县| 藁城市| 礼泉县| 新竹县| 镇赉县| 东台市| 玉林市| 福清市| 营口市| 玉田县| 东城区| 和田市| 九龙县| 通化县|