Mybatis的原始的执行方式

一、通过SqlSessionFactory创建sqlsession,再由Sqlsession获取session对象,然后通过session中的执行器Executor,去执行MapperStatement封装的sql语句

@Test
public void findAll() throws IOException {
    //1.读取配置文件
    InputStream in = Resources.getResourceAsStream("SqlMapConfig.xml");
    //2.创建 SqlSessionFactory 的构建者对象
    SqlSessionFactoryBuilder builder = new SqlSessionFactoryBuilder();
    //3.使用构建者创建工厂对象 SqlSessionFactory
    SqlSessionFactory factory = builder.build(in);
    //4.使用 SqlSessionFactory 生产 SqlSession 对象
    SqlSession session = factory.openSession();

    List<User> users = session.selectList("findAll");
     /*
        //5.使用 SqlSession 创建 dao 接口的代理对象(接口绑定原理使用的jdk动态代理)
        UserDao userDao = session.getMapper(UserDao.class);
        //6.使用代理对象执行查询所有方法
        List<User> users = userDao.findAll();
      */
    for (User user : users) {
        System.out.println(user);
    }
    //7.释放资源
    session.close();
    in.close();
}

二、执行器Executor的分类

  SimpleExecutor:默认的Executor,每个SQL执行时都会创建新的 Statement,继承了

  BaseExecutor

  CachingExecutor:可缓存数据的Executor,用于二级缓存的执行器

  BatchExecutor:用于批处理的Executor

  ReuseExecutor:相同的SQL会服用的Statemen
posted @ 2020-07-14 22:07  jock_javaEE  阅读(142)  评论(0编辑  收藏  举报