mybaits 的批量入库操作(据说是性能最优的)

一  操作案例

1.1 工程

mybaits 的批量入库操作(据说是性能最优的)_第1张图片

1.2 代码

 

1.service层

    @Autowired
    private SqlSessionFactory sqlSessionFactory;
    @Override
    public int addUser(UserDomain ud) {
        return userDao.addUser(ud);
    }

    public int  batchAddUser(){

        SqlSession session = sqlSessionFactory.openSession(ExecutorType.BATCH);
        try {
            UserDao  ud= session.getMapper(UserDao .class);
            long start=System.currentTimeMillis();
            int count=10;
            for(int k=0;k 设置参数(一万次)==>执行(一次)]  耗时4598
            //非批量:(预编译SQL==>设置参数==>执行) 三个步骤执行一万次 耗时10200
            System.out.println("执行时长:" + (end-start));
        } finally {
            session.close();
        }
        return 1;

    }

2.dao层

@Mapper
public interface UserDao {
    public int addUser(UserDomain ud);
    public List queryUserList();
}

3.mapper




	
    tb_user
  
	
    userId,userName,pwd,tel
  
	
		INSERT INTO
		
		
			userName,pwd,
			
				tel,
			
		
		
			#{userName, jdbcType=VARCHAR},#{pwd, jdbcType=VARCHAR},
			
				#{tel, jdbcType=VARCHAR},
			
		
	


	

4.controller

    @RequestMapping("/batch")
    @ResponseBody
    public String addUserBatch(){
        System.out.println("进入controoler........");
        int flag=userService.batchAddUser();
        System.out.println("controller返回状态........"+flag);
        return "添加成功!!!,返回状态:"+flag+"";

    }

5.进行访问

mybaits 的批量入库操作(据说是性能最优的)_第2张图片

 console:

mybaits 的批量入库操作(据说是性能最优的)_第3张图片

结论:将所有的参数缓存起来,最后一次性执行,只执行一次sql。 批量操作是在session.commit()以后才发送sql语句给数据库进行执行的;

你可能感兴趣的:(mybaits,java,开发语言)