一 核心配置文件
mybatis-config.xml MyBatis的配置文件包含了会深深影响 MyBatis行为的设置和属性信息
配置文档的顶层结构如下:
-
configuration(配置) properties(属性) settings(设置) typeAliases(类型别名) typeHandlers(类型处理器) objectFactory(对象工厂) plugins(插件) environments(环境配置) environment(环境变量) transactionManager(事务管理器) dataSource(数据源) databaseIdProvider(数据库厂商标识) mappers(映射器)
二, 环境配置(environments)
MyBatis 可以配置成适应多种环境,这种机制有助于将 SQL 映射应用于多种数据库之中, 现实情况下有多种理由需要这么做。例如,开发、测试和生产环境需要有不同的配置;或者想在具有相同 Schema 的多个生产数据库中使用相同的 SQL 映射。还有许多类似的使用场景。
不过需要注意:尽管可以配置多个环境,但每个 SqlSessionFactory 实例只能选择一种环境
可以通过属性进行SqlSessionFactory实例的选择,以下xml配置两个相同的环境,一个id是development,另一个是test,只需要在default该关键字中选择test或者development其中一个
<environments default="test">
<environment id="development">
<transactionManager type="JDBC"/>
<dataSource type="POOLED">
<property name="driver" value="com.mysql.jdbc.Driver"/>
<property name="url" value="jdbc:mysql://localhost:3306/mybatis?useSSL=true&useUnicode=true&characterEncoding=UTF8"/>
<property name="username" value="root"/>
<property name="password" value="tong0726"/>
</dataSource>
</environment>
<environment id="test">
<transactionManager type="JDBC"/>
<dataSource type="POOLED">
<property name="driver" value="com.mysql.jdbc.Driver"/>
<property name="url" value="jdbc:mysql://localhost:3306/mybatis?useSSL=true&useUnicode=true&characterEncoding=UTF8"/>
<property name="username" value="root"/>
<property name="password" value="tong0726"/>
</dataSource>
</environment>
</environments>
- 默认使用的环境 ID(比如:default=“development”)。
- 每个 environment 元素定义的环境 ID(比如:id=“development”)。
- 事务管理器的配置(比如:type=“JDBC”)。
- 数据源的配置(比如:type=“POOLED”)。
4.3. properties(属性)
我们可以通过properties属性来实现引用配置文件
这些属性可以在外部进行配置,并可以进行动态替换。你既可以在典型的 Java 属性文件中配置这些属性,也可以在 properties 元素的子元素中设置
首先我们编写一个配置文件
db.properties
driver=com.mysql.jdbc.Driver
url=jdbc:mysql://localhost:3306/mybatis?useSSL=true&useUnicode=true&characterEncoding=UTF8
username=root
password=tong0726
在核心配置文件中引入
<configuration>
<!--引入外部配置文件-->
<properties resource="db.properties"/>
<environments default="development">
<environment id="development">
<transactionManager type="JDBC"/>
<dataSource type="POOLED">
<property name="driver" value="${driver}"/>
<property name="url" value="${url}"/>
<property name="username" value="${username}"/>
<property name="password" value="${password}"/>
</dataSource>
</environment>
</environments>
<mappers>
<mapper resource="UserMapper.xml"/>
</mappers>
</configuration>
4.4.typeAliases(类型别名)
类型别名可为 Java 类型设置一个缩写名字。 它仅用于 XML 配置,意在降低冗余的全限定类名书写,使用别名之后,我们在写sql时,可以直接使用别名,包名+类名的权限使用可以丢弃
<!--可以给实体类起别名-->
<typeAliases>
<typeAlias type="com.doer.pojo.User" alias="User"/>
</typeAliases>
当这样配置时,User 可以在任何使用com.doer.pojo.User的地方
也可以指定一个包名,MyBatis 会在包名下面搜索需要的 Java Bean,比如
扫描实体类的包,它的默认别名就是这个类型类名,首字母小写
<typeAliases>
<package name="com.doer.pojo"/>
</typeAliases>
包名方式的别名使用默认是包下类名的小写,对应的大写也是可行的
在实体类比较少的时候使用第一种方式,如果实体类十分多,建议使用第二种,
第一种可以使用DIY(自定义)别名,第二种则不行,如果非要改需要在实体类上增加注解
@Alias("user")
public class User {
private int id;
private String name;
private String pwd;
}
4.5.设置
这是 MyBatis 中极为重要的调整设置,它们会改变 MyBatis 的运行时行为。 下表描述了设置中各项设置的含义、默认值等。
在setting中我们最多使用的是开启日志功能以及mybatis缓存
4.6. 映射器(mappers)
MapperRegistry:注册绑定我们绑定的Mapper文件,
方式一:使用相对于类路径的资源引用
<!-- 使用相对于类路径的资源引用 -->
<mappers>
<mapper resource="com/doer/dao/UserMapper.xml"/>
</mappers>
方式二:使用class文件绑定注册
使用class文件绑定的时候需要注意
- 接口和它的Mapper配置文件必须同名,并且在同一个包下
<!-- 使用映射器接口实现类的完全限定类名 -->
<mappers>
<mapper class="com.doer.dao.UserMapper"/>
</mappers>
方式三:将包内的映射器接口实现全部注册为映射器
<mappers>
<package name = "com.doer.dao"/>
</mappers>
如果使用方式二或者方式三,class方式或者包内映射器的方式,必须要保证mapper接口和其对应的Mapper.xml映射器要在同一个包下,并且同名