简介.md
1. 安装⚓
pom.xml
<dependency>
<groupId>org.mybatis</groupId>
<artifactId>mybatis</artifactId>
<version>x.x.x</version>
</dependency>
2. 从 XML 中构建 SqlSessionFactory⚓
3. 从 SqlSessionFactory 中获取 SqlSession⚓
命名解析:为了减少输入量,MyBatis 对所有的命名配置元素(包括语句,结果映射,缓存等)使用了如下的命名解析规则。
- 完全限定名(比如 “com.mypackage.MyMapper.selectAllThings)将被直接用于查找及使用。
- 短名称(比如 “selectAllThings”)如果全局唯一也可以作为一个单独的引用。 如果不唯一,有两个或两个以上的相同名称(比如 “com.foo.selectAllThings” 和 “com.bar.selectAllThings”),那么使用时就会产生“短名称不唯一”的错误,这种情况下就必须使用完全限定名。
4. 作用域(Scope)和生命周期⚓
对象生命周期和依赖注入框架
依赖注入框架可以创建线程安全的、基于事务的 SqlSession 和映射器,并将它们直接注入到你的 bean 中,因此可以直接忽略它们的生命周期。
4.1 SqlSessionFactoryBuilder⚓
这个类可以被实例化、使用和丢弃,一旦创建了 SqlSessionFactory,就不再需要它了。SqlSessionFactoryBuilder 实例的最佳作用域是方法作用域(也就是局部方法变量)
4.2 SqlSessionFactory⚓
SqlSessionFactory 一旦被创建就应该在应用的运行期间一直存在,没有任何理由丢弃它或重新创建另一个实例。因此 SqlSessionFactory 的最佳作用域是应用作用域。
4.3 SqlSession⚓
每个线程都应该有它自己的 SqlSession 实例。SqlSession 的实例不是线程安全的,因此是不能被共享的,所以它的最佳的作用域是请求或方法作用域。
绝对不能将 SqlSession 实例的引用放在一个类的静态域,甚至一个类的实例变量也不行。 也绝不能将 SqlSession 实例的引用放在任何类型的托管作用域中。
每次收到的 HTTP 请求,就可以打开一个 SqlSession,返回一个响应,就关闭它。
4.4 映射器实例⚓
映射器是一些由你创建的、绑定你映射的语句的接口。映射器接口的实例是从 SqlSession 中获得的。映射器实例的最佳作用域是方法作用域。
SqlSession session = sqlSessionFactory.openSession();
try {
BlogMapper mapper = session.getMapper(BlogMapper.class);
// 你的应用逻辑代码
} finally {
session.close();
}