
重用执行器执行之前会先查询缓存,是否存在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