configuration(配置)
properties(属性)
settings(设置)
typeAliases(类型别名)
typeHandlers(类型处理器)
objectFactory(对象工厂)
plugins(插件)
environments(环境配置)
environment(环境变量)
transactionManager(事务管理器)
dataSource(数据源)
databaseIdProvider(数据库厂商标识)
mappers(映射器)
环境配置(environments)
MyBatis 可以配置成适应多种环境
尽管可以配置多个环境,但每个 SqlSessionFactory 实例只能选择一种环境
Mybatis默认事务管理器是JDBC 默认连接池是POOLED
属性(properties)我们可以通过properties属性来实现引用配置文件
properties必须放在mybatis-config配置文件的第一个位置
这些属性都是可以外部配置且可以替换的。可以在java文件中配置,也可以在properties元素的子元素进行传递。
编写一个配置文件
driver=com.mysql.jdbc.Driver url=jdbc:mysql://localhost:3306/mybatis?useSSL=true&useUnicode=true&characterEncoding=UTF-8 username=root password=miao
在核心文件中引入
如果一个属性在不只一个地方进行了配置,那么,MyBatis 将按照下面的顺序来加载:
- 首先读取在 properties 元素体内指定的属性。
- 然后根据 properties 元素中的 resource 属性读取类路径下属性文件,或根据url 属性指定的路径读取属性文件,并覆盖之前读取过的同名属性。
- 最后读取作为方法参数传递的属性,并覆盖之前读取过的同名属性。
因此,通过方法参数传递的属性具有最高优先级,resource/url属性中指定的配置文件次之,最低优先级的则是 properties 元素中指定的属性。
类型别名(typeAliases)- 类型别名可为 Java 类型设置一个缩写名字。
- 它仅用于 XML 配置,意在降低冗余的全限定类名书写。
- 放在配置文件的第三个位置
也可以指定一个包名,MyBatis 会在包名下面搜索需要的 Java Bean
在没有注解的情况下,会使用 Bean 的首字母小写的非限定类名来作为它的别名
在实体类少时可以使用第一种方式,在实体类多时使用第二种
第二种方式可以通过@Alias注解方式取别名
@Alias("hello")
public class User {
设置(settings)
映射器(mappers)
第一种方法用----resource进行配置:
第二种方法—用class进行配置
需要Mapper和Mapper的配置文件在一个包内且名字相同
第三种方法—用package进行配置
需要Mapper和Mapper的配置文件在一个包内且名字相同
可以直接放在resource文件下,可以直接写文件名
作用域(Scope)和生命周期
理解我们之前讨论过的不同作用域和生命周期类别是至关重要的,因为错误的使用会导致非常严重的并发问题
SqlSessionFactoryBuilder:
- 一旦创建就不用了
- 局部变量
SqlSessionFactory:
- 可以看作是数据库连接池
- 在应用运行期间一直存在
- 应用作用域
SqlSession:
- 连接到连接池的一个请求
- sqlSession的实例不安全,因此不能被共享,因此作用于请求作用域
- 用完后就关闭
Mapper:
- 由sqlSession获得
- 代表一个具体业务



