Mybatis配置文件结构
注意:
-
Mybatis
配置文件的元素节点是有一定顺序的,节点位置必须按以上位置排序,否则会编译错误。
XML
配置文件中的重要标签
properties
标签
settings
标签
typeAliases
标签
typeHandler
标签
environments
标签
transactionManager
标签
dataSource
标签
mapper
标签
标签示例:
properties标签
作用:
-
配置文件标签
-
使用标签元素指定外部文件
-
值在标签中
-
指定外部文件:
<properties resource="MybatisStudy/resource/databases.properties" />
<!--使用resource属性引用外部的配置文件-->
值在标签中:
<properties>
<property name="username" value="junkingboy" />
<property name="password" value="junkingboy" />
</properties>
在environments
节点中引用username
和password
变量:
<environments default="test">
<environment id="test">
<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>
setting标签
作用:
配置Mybatis
运行时行为,影响Mybatis
的底层运行。
配置项 | 作用 | 配置选项 | 默认值 |
---|---|---|---|
cacheEnabled |
影响所有映射器中配置缓存的全局开关 | true|false |
true |
lazyLoadingEnabled |
延迟加载的全局开关。开启时,所有关联对象都会延迟加载。在特定关联关系中可通过设置 fetchType 属性来覆盖该项的开关状态 | true|false |
true |
aggressiveLazyLoading |
当启用时,对任意延迟属性的调用会使带有延迟加载属性的对象完整加载;反之,每种属性将会按需加载 | true|false |
3.4.1版本之后默认为false |
autoMappingBehavior |
指定 MyBatis 应如何自动映射列到字段或属性。 NONE 表示取消自动映射。 PARTIAL 表示只会自动映射,没有定义嵌套结果集和映射结果集。 FULL 会自动映射任意复杂的结果集(无论是否嵌套) | NONE、PARTIAL、FULL |
PARTIAL |
defaultExecutorType |
配置默认的执行器。SIMPLE 是普通的执行器;REUSE 会重用预处理语句(prepared statements);BATCH 执行器将重用语句并执行批量更新 | SIMPLE、REUSE、BATCH |
SIMPLE |
mapUnderscoreToCamelCase |
是否开启自动驼峰命名规则映射,即从经典数据库列名 A_COLUMN 到经典 Java 属性名 aColumn 的类似映射 | true|false |
false |
typeAliases标签
作用:
定义别名
这个作用类似于SQL
当中的别名的概念。给指定包下的类指定别名
<typeAliases>
<typeAlias alias="website" type="com.junkingboy.bean" />
</typeAliases>
对同一个包下的多个类定义别名:
<typeAliases>
<package name="com.junkingboy.bean" />
</typeAliases>
<!--
这样mybatis会扫描com.junkingboy.bean包里面的类,将其第一个字母变为小写作为其别名
-->
typeHandler标签
作用:
处理器类型标签。主要作用是:将获取的值合理地转化为 Java 类型。
-
jdbcType 用于定义数据库类型
-
javaType 用于定义 Java 类型
typeHandler
的作用就是承担jdbcType
和javaType
之间的相互转换。
自定义类型:
要求:
实现 org.apache.ibatis.type.TypeHandler
接口或继承org.apache.ibatis.type.BaseTypeHandle
类
举例:
类型处理器 | Java 类型 | JDBC 类型 |
---|---|---|
BooleanTypeHandler |
java.lang.Boolean , boolean |
数据库兼容的 BOOLEAN |
ByteTypeHandler |
java.lang.Byte , byte |
数据库兼容的 NUMERIC 或 BYTE |
ShortTypeHandler |
java.lang.Short , short |
数据库兼容的 NUMERIC 或 SMALLINT |
IntegerTypeHandler |
java.lang.Integer , int |
数据库兼容的 NUMERIC 或 INTEGER |
LongTypeHandler |
java.lang.Long , long |
数据库兼容的 NUMERIC 或 BIGINT |
FloatTypeHandler |
java.lang.Float , float |
数据库兼容的 NUMERIC 或 FLOAT |
DoubleTypeHandler |
java.lang.Double , double |
数据库兼容的 NUMERIC 或 DOUBLE |
BigDecimalTypeHandler |
java.math.BigDecimal |
数据库兼容的 NUMERIC 或 DECIMAL |
environmentes标签
作用:
配置mybatis
的多套运行环境,将SQL
映射到多个不同的数据库上--->必须指明一套默认的运行环境
配置一套运行环境需要的标签:
-
environment
-
transactionManager--->Mybatis支持的两个事务管理器
-
JDBC类型事务管理器
--->应用程序服务器负责事务管理操作,例如提交、回滚等 -
Managed类型事务管理器
--->应用程序服务器负责管理连接生命周期
-
-
dataSource
-
配置数据库的连接属性
-
type
属性用于指定数据源类型-
Unpooled:
没有数据库连接池,Mybatis
需要打开和关闭每个数据库操作的链接 -
Pooled:
由Mybatis
维护一个数据库连接池,每个数据库的操作,MyBatis
都会使用连接池中的连接,并在操作完成后将它们返回到池中。--->减少了每次创建新连接的初始化连接和身份验证的时间 -
Jndi:
MyBatis
从JNDI
数据源中获取连接。
-
-
-
dataSource
标签示例:
<dataSource type="POOLED">
<!-- MySQL数据库驱动 -->
<property name="driver" value="com.mysql.jdbc.Driver" />
<!-- 连接数据库的URL -->
<property name="url"
value="jdbc:mysql://localhost:3306/test?characterEncoding=utf8" />
<property name="username" value="junkingboy" />
<property name="password" value="junkingboy" />
</dataSource>
mappers标签
作用:
指定 MyBatis SQL
映射文件的路径
子标签:
mapper
子标签中用于指定SQL
映射文件路径的属性:
resource
举例:
<mappers>
<mapper resource="com/junkingboy/mapper/Website.xml" />
</mappers>