MyBatis主配置文件
主配置文件的主要内容和层级
- configuration(配置)
- properties(属性)
- property
- settings(设置)
- setting
- typeAliases(类型别名)
- typeAliase(为单类设置别名)
- package (为某个包下的类自动成别名,别名为类名,不区分大小写)
- typeHandlers(类型处理器)
- objectFactory(对象工厂)
- typeHandler
- plugins(插件)
- plugin
- environments(环境配置)
- environment(环境变量)
- transactionManager(事务管理器)
- dataSource(数据源)
- environment(环境变量)
- mappers(映射器)
- mapper
- package
- url
- properties(属性)
常用属性详解
properties(属性)
作用: 设置属性和属性值,以便在后续的配置中使用。
配置方式:
-
通过
properties
元素的子元素property
来配置,例如:<properties> <property name="driver" value="com.mysql.jdbc.Driver"/> <property name="url" value="jdbc:mysql://localhost:3306/mybatis"/> <property name="username" value="root"/> <property name="password" value=""/> </properties>
-
在属性文件中配置,在
classpath
(类路径)下新建jdbc.properties
文件,内容如下:jdbc.driver=com.mysql.jdbc.Driver jdbc.url=jdbc:mysql://localhost:3306/mybatis jdbc.username=root jdbc.password=1234
此时
properties
标签配置如下:<!--resource属性指定配置文件的位置,注意:配置文件必须在类路径下--> <properties resource="jdbc.properties"></properties>
-
配置方式1和2可以混合使用,例如:
注意: 当属性名重复时,优先使用
resource
中的属性<properties resource="jdbc.properties"> <property name="driver" value="com.mysql.jdbc.Driver"/> <property name="url" value="jdbc:mysql://localhost:3306/mybatis"/> <property name="username" value="root"/> <property name="password" value=""/> </properties>
如何使用: 在后续的配置中使用${属性名}
的方式获取属性值,例如:
<!--配置方式1的使用方式-->
<dataSource type="POOLED">
<!--引用properties标签中的内容-->
<property name="driver" value="${driver}"/>
<property name="url" value="${url}"/>
<property name="username" value="${username}"/>
<property name="password" value="${password}"/>
</dataSource>
<!--配置方式2的使用方式-->
<dataSource type="POOLED">
<!--引用properties标签中的内容-->
<property name="driver" value="${jdbc.driver}"/>
<property name="url" value="${jdbc.url}"/>
<property name="username" value="${jdbc.username}"/>
<property name="password" value="${jdbc.password}"/>
</dataSource>
typeAliases(类型别名)
类型别名是为 Java 类型设置一个短的名字。 它只和 XML 配置有关,用来减少类完全限定名的冗余。
定义别名之后,在持久层接口的映射(mapper)文件中就可以直接使用user
来代替之前的com.zfnotes.beans.User
。
定义方式:
-
单个定义别名:
<!--typeAliases配置别名--> <typeAliases> <!--type指定实体类的全限定类名,alias指定别名,指定别名后不再区分大小写--> <typeAlias type="com.zfnotes.beans.User" alias="user"/> <typeAlias type="com.zfnotes.beans.Student" alias="student"/> </typeAliases>
-
批量定义别名:
<!--typeAliases配置别名--> <typeAliases> <!--package扫描整个包下的类,类名就是别名,不再区分大小写--> <package name="com.zfnotes.beans"/> </typeAliases>
-
在类上使用
@Alias
注解:@Alias("user") public class User { ... }
environments(环境配置)和environment(环境变量)
可以在environments标签中配置多个environment子标签表示多个数据库,但是必须在environments中使用default
属性来指定使用哪一个数据库,在切换环境时只需要修改default
属性即可。
<!--配置mybatis环境,default指定默认的环境id-->
<environments default="mysql">
<!--配置环境和环境id-->
<environment id="mysql">
...
</environment>
<environment id="oracle">
...
</environment>
</environments>
transactionManager(事务管理器)
在 MyBatis 中有两种类型的事务管理器(也就是 type="JDBC"或者type=“MANAGED”):
- JDBC – 这个配置就是直接使用了 JDBC 的提交和回滚设置,它依赖于从数据源得到的连接来管理事务作用域。
- MANAGED – 它从来不提交或回滚一个连接,而是让容器来管理事务的整个生命周期, 默认情况下它会关闭连接。
注意: 如果你正在使用 Spring + MyBatis,则没有必要配置事务管理器, 因为 Spring 模块会使用自带的管理器来覆盖前面的配置
dataSource(数据源)
dataSource 元素使用标准的 JDBC 数据源接口来配置数据源和数据库连接的基本属性。
有三种内建的数据源类型(也就是 type=”[UNPOOLED|POOLED|JNDI]”)
-
UNPOOLED
不使用连接池,每次被请求时打开连接,使用完毕后关闭连接。对数据库性能要求不大时可以使用该方式。
-
POOLED
使用连接池,将 JDBC 连接对象组织起来,避免了创建新的连接实例时所必需的初始化和认证时间。
-
JNDI
配置外部数据源。
mappers(映射器)
告诉了 MyBatis 去哪里找映射文件。
配置方式:
-
使用相对于类路径的资源引用,例如:
<!-- 使用相对于类路径的资源引用 --> <mappers> <mapper resource="com/zfnotes/dao/UserDao.xml"/> </mappers>
-
使用mapper接口(持久层接口)的完全限定类名,例如:
注意: 此种方法要求mapper接口名称和mapper映射文件名称相同,且放在同一个或者同名目录中。
<mappers> <mapper class="com.zfnotes.dao.UserDao"/> </mappers>
-
注册指定包下的所有mapper接口,例如:
注意: 此种方法要求mapper接口名称和mapper映射文件名称相同,且放在同一个或者同名的目录中。
<mappers> <package name="com.zfnotes.dao"/> </mappers>
-
使用完全限定资源定位符(URL),例如:
<mappers> <mapper url="file:///xxx/**/xxx.xml"/> </mappers>
更多mybatis主配置文件内容参见:XML配置