1.什么是mybatis?
- mybatis是一个基于java的持久层框架,它内部封装了jdbc,使开发者只需要关注sql语句本身,而不需要花费精力去处理加载驱动、创建连接、创建statement等繁杂的过程。
- mybatis通过xml或注解的方式将要执行的各种statement配置起来,并通过java对象和statement中sql的动态参数进行映射生成最终执行的sql语句,最后由mybatis框架执行sql并将结果映射为java对象并返回。
2.核心类
-
SqlSessionFactoryBuilder
包含了系统的核心设置:数据源,事务管理器。一旦使用该类创建了SqlSessionFactory, 就不再需要它了。因此它的实例的最佳作用域是局部方法变量。 -
SqlSessionFactory
SqlSessionFactory 一旦被创建就在应用内一直存在,没有任何理由对他进行清楚或重建。因此SqlSessionFactory的最佳作用域是应用作用域。可以使用单例的模式实现。 -
SqlSession
SqlSession包含了面向数据库执行SQL命令所需的所有方法。每个线程都应该有自己的SqlSession. 它不是线程安全的,因此不能被共享,所以它的最佳作用域是方法或请求作用域。例如:每次收到一个请求,就新建一个SqlSession,请求结束的时候关闭SqlSession.
SqlSession session = sqlSessionFactory.openSession();
try {
// do work
} finally {
session.close();
}
- Mapper
映射器是一个用来绑定映射语句的接口。映射接口的实例是从SqlSession中获取的,因此作用域和SqlSession相同(方法内)
SqlSession session = sqlSessionFactory.openSession();
try {
BlogMapper mapper = session.getMapper(BlogMapper.class);
// do work
} finally {
session.close();
}
SqlSession 通过Mapper的命名空间,找到对应的Mapper,然后调用Mapper中相关的方法,来执行sql语句。
网友评论