配置解析
1.核心配置文件2.环境配置(environments)3.属性(properties)4.类型别名(typeAliases)5.设置6.其他配置7.映射器(mappers)8.生命周期和作用域(Scope)
SqlSessionFactoryBuilderSqlSessionFactorySqlSession
配置解析 1.核心配置文件 2.环境配置(environments)Mybatis可以配置适应多种环境
不过要记住:尽管可以配置多个环境,但每个SqlSessionFactory实例只能选择一种环境
MyBatis默认的事务管理器是JDBC,连接池:POOLED
3.属性(properties)
然后在核心配置文件中引入:
【需要注意的是】
如果一个属性在不止一个地方进行了配置,那么,Mybatis将按照以下的顺序来加载:
首先读取在properties元素体内指定的属性然后根据properties元素中的resource属性读取类路径下属性文件,或根据url属性指定的路径读取属性文件,并覆盖之前读取过的同名属性最后读取作为方法参数传递的属性,并覆盖之前读取过的同名属性。
因此,通过方法参数传递的属性具有最高优先级,resource/url属性中指定的配置文件次之,最低优先级的是properties元素体中的属性。
4.类型别名(typeAliases)类型别名是为Java类型设置一个更短的别名存在的意义在于用来减少类完全限定名的冗余
也可以指定一个包名,mybatis会在包名下面搜索需要的Java Bean。
扫描实体类的包,它默认的别名就为这个类的类名,首字母小写!
总结:
在实体类较少的时候,使用第一种方式
实体类较多,建议使用第二中。
第一种可以自己起别名,第二种不行,如果非要改,需要在实体上增加注解
@Alias("user")
public class User
5.设置
这是 MyBatis 中极为重要的调整设置,它们会改变 MyBatis 的运行时行为
比如:日志的设置
6.其他配置 7.映射器(mappers)
既然 MyBatis 的行为已经由上述元素配置完了,我们现在就要来定义 SQL 映射语句了。 但首先,我们需要告诉 MyBatis 到哪里去找到这些语句。 在自动查找资源方面,Java 并没有提供一个很好的解决方案,所以最好的办法是直接告诉 MyBatis 到哪里去找映射文件。
MapperRegistry:注册绑定我们的Mapper文件
方式一
方式二
【注意】
接口和他的Mapper配置文件必须同名接口和他的Mapper配置文件必须在同一个包下
方式三
方式四
【注意】
接口和他的Mapper配置文件必须同名接口和他的Mapper配置文件必须在同一个包下 8.生命周期和作用域(Scope)
理解不同作用域和生命周期类别是至关重要的,因为错误的使用会导致非常严重的并发问题。
提示 [对象生命周期和依赖注入框架]
依赖注入框架可以创建线程安全的、基于事务的 SqlSession 和映射器,并将它们直接注入到你的 bean 中,因此可以直接忽略它们的生命周期
SqlSessionFactoryBuilder一旦创建了SqlSessionFactory,就不再需要它了局部方法变量。可以重用 SqlSessionFactoryBuilder 来创建多个 SqlSessionFactory 实例,但最好还是不要一直保留着它,以保证所有的 XML 解析资源可以被释放给更重要的事情。 SqlSessionFactory
可以想象为:数据库连接池SqlSessionFactory 一旦被创建就应该在应用的运行期间一直存在,没有任何理由丢弃它或重新创建另一个实例。SqlSessionFactory 的最佳作用域是应用作用域最简单的就是使用单例模式或者静态单例模式。 SqlSession
连接到连接池的一个请求!SqlSession 的实例不是线程安全的,因此是不能被共享的,所以它的最佳的作用域是请求或方法作用域用完之后就赶紧关闭,否则资源被占用!



