sqlsession的由来
Mybatis 对外使用SqlSession进行交互,SqlSession是mybatis的核心。
SqlSessionFactory
SqlSessionFactory使用生成SqlSession的工厂。
String resource = "org/mybatis/example/mybatis-config.xml";
InputStream inputStream = Resources.getResourceAsStream(resource);
SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);
SqlSessionFactoryBuilder 读取 Mybatis 配置文件,构建Configuration,做为参数构建SqlSessionFactory。
SqlSession
SqlSession session = sqlSessionFactory.openSession();
try {
Blog blog = (Blog) session.selectOne("org.mybatis.example.BlogMapper.selectBlog", 101);
} finally {
session.close();
}
SqlSession 通过手下的四大对象完成一次sql执行操作
Executor: 执行器,调度使用后面三个对象,执行sql
StatementHanlder: 与数据库交互的对象,获取数据库链接,组织sql,执行sql
ParameterHandler: 对sql中的参数进行设置
ResultHandler: 对结果集进行封装
通过Mapper类进行SQL的执行
SqlSession session = sqlSessionFactory.openSession();
try {
BlogMapper mapper = session.getMapper(BlogMapper.class);
Blog blog = mapper.selectBlog(101);
} finally {
session.close();
}
Mapper通过一层层的动态代理,最后执行SqlSession的sql执行流程。