重用执行器和批处理执行器
重用执行器执行之前会先查询缓存,是否存在sql ———>statement,可提升性能,因为创建一个statment比较i消耗性能,如果存在sql对应的statement则直接使用该statement和数据库进行交互。
批处理:
批处理器持有:
1、statementList stement列表,用于向数据库发送sql语句
2、batchResultList 用于对应的statement语句返回结果集。
从上边的代码可以看出,只有相邻的相同的sql语句才会使用同一个statement,负责就会使用不同的statement。
public void sessionBatchTest(){ SqlSession sqlSession = factory.openSession(ExecutorType.BATCH,true); UserMapper mapper = sqlSession.getMapper(UserMapper.class); //MappedStatement // 1.sql 相同 2.MappedStatement 3.必须是连续的 =》JDBC statement mapper.setName(10,"你好"); //添加 把参数和SQL设置好=》 1个statement User user = Mock.newUser(); mapper.addUser(user);2个statement mapper.addUser(user);和上边公用一个stament mapper.setName(user.getId(),"飞猪");3个statement // JDBC statement? List<BatchResult> batchResults = sqlSession.flushStatements(); 此时一共发送三个statement