mybatis 使用sqlSessionFactory實現批量操作


sqlSessionFactory實現批量提交的java,但無法返回受影響數量。

 1 public int updateBatch(List<Object> list){
 2         if(list ==null || list.size() <= 0){
 3             return -1;
 4         }
 5         SqlSessionFactory sqlSessionFactory = SpringContextUtil.getBean("sqlSessionFactory");
 6         SqlSession sqlSession = null;
 7         try {
 8             sqlSession = sqlSessionFactory.openSession(ExecutorType.BATCH,false);
 9             Mapper mapper = sqlSession.getMapper(Mapper.class);
10             int batchCount = 1000;//提交數量,到達這個數量就提交
11             for (int index = 0; index < list.size(); index++) {
12                 Object obj = list.get(index);
13                 mapper.updateInfo(obj);
14                 if(index != 0 && index%batchCount == 0){
15                     sqlSession.commit();
16                 }                    
17             }
18             sqlSession.commit();
19             return 0;
20         }catch (Exception e){
21             sqlSession.rollback();
22             return -2;
23         }finally {
24             if(sqlSession != null){
25                 sqlSession.close();
26             }
27         }
28         
29 }
@Component
public class SpringContextUtil implements ApplicationContextAware{

    private static ApplicationContext applicationContext;

    @Override
    public void setApplicationContext(ApplicationContext applicationContext) throws BeansException {
        SpringContextUtil.applicationContext = applicationContext;
    }

    public static ApplicationContext getApplicationContext(){
        return applicationContext;
    }

    public static Object getBean(Class T){
        try {
            return applicationContext.getBean(T);
        }catch (BeansException e){
            return null;
        }
    }

    public static Object getBean(String name){
        try {
            return applicationContext.getBean(name);
        }catch (BeansException e){
            return null;
        }
    }
}

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM