国产成人精品久久免费动漫-国产成人精品天堂-国产成人精品区在线观看-国产成人精品日本-a级毛片无码免费真人-a级毛片毛片免费观看久潮喷

您的位置:首頁技術文章
文章詳情頁

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

瀏覽:83日期:2023-10-20 16:22:07

簡介: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 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 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)); //批量 預編譯sql一次==》設置參數(shù)==》10000次==》執(zhí)行1次 677 //非批量 (預編譯=設置參數(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

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

以上就是本文的全部內(nèi)容,希望對大家的學習有所幫助,也希望大家多多支持好吧啦網(wǎng)。

相關文章:
主站蜘蛛池模板: 日韩亚洲欧美一区噜噜噜 | 九九在线免费视频 | 欧美做爰xxxⅹ性欧 欧美做爰免费大片在线观看 | 成人做爰网站免费看 | 国产在线美女 | 亚洲欧美日韩高清综合678 | 国产欧美一区二区日本加勒比 | 三级黄色片日韩 | 免费观看毛片视频 | 久久这里一区二区精品 | 亚洲专区欧美专区 | 成人三级精品视频在线观看 | 欧美色欧美亚洲高清在线视频 | 99色在线视频 | 国产精品欧美激情在线播放 | 久久国产影视免费精品 | 亚洲男人天堂 | 91视频一区 | 131美女爱做免费毛片 | 国内成人精品亚洲日本语音 | 韩国美女高清爽快一级毛片 | 国产a∨一区二区三区香蕉小说 | 99久久精品全部 | 久久久日本久久久久123 | 日韩欧美一区二区三区在线 | 亚洲午夜久久久久影院 | 一级爱做片免费观看久久 | 一本色道久久综合网 | a毛片久久免费观看 | 亚洲视频在线一区 | 大桥未久在线精品视频在线 | 国产精品免费_区二区三区观看 | 亚洲天天| 日韩欧美自拍 | 国产精品久久做爰 | 亚洲第一免费网站 | 国产自线一二三四2021 | 在线免费观看亚洲视频 | 亚洲精品欧美日韩 | 一本色综合 | 免费亚洲视频 |