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