void queryByID() throws IOException {
InputStream inputStream = Resources.getResourceAsStream("mybatis-config.xml");
SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);
SqlSession sqlSession = sqlSessionFactory.openSession();
User user = sqlSession.selectOne("queryByID", 1011);
System.out.println(user);
sqlSession.close();
}
- MyBatis 的底层原理 :
- 1 Mybatis 配置:sqlmapConfig.xml,此文件作为 Mybatis 的全局配置文件,配置了 Mybatis 的运行环境等信息。mapper.xml 即 sql 映射文件,文件中配置了操作数据库的 sql 语句。此文件需要在SqlMapConfig.xml 中加载。
- 2 通过 Mybatis 环境等配置信息获得 sqlsessionfactory 即会话工厂
- 3 由会话工厂创建 sqlsession 即会话,操作数据库需要通过 sqlsession 进行。
- 4 mybatis 底层自定义了 Executor 执行器接口操作数据库,Executor 接口有两个实现,一个是基本执行器,一个是缓存执行器。
- 5 Mapped Statement 也是 mybatis 一个底层封装对象,它保障了 mybatis 配置信息及 sql 映射信息等。mapper.xml 文件中一个 sql 对应一个 Mapped Statement 独享,sql 的 id 就是 mapped statement 的id。
- 6 Mapped Statement 对 sql 执行输入参数定义,包括 Hashmap、基本类型、pojo、Executor 通过 MappedStatement 在执行 sql 前将输入的 java 对象映射到 sql 中,输入参数映射就是 jdbc 编程中对 preparedStatement 设置参数。
- 7 Mapped Statement 对 sql 执行输出结果进行定义,包括 Hashmap、基本类型、pojo、Executor 通过Mapped Statement 在执行 sql 后将输出结果映射到 java 对象中,输出结果映射过程相当于 jdbc 编程中对结果的解析处理