重用执行器和批处理执行器

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

  

原文地址:https://www.cnblogs.com/sunanli/p/13583794.html