概述
MyBatis要想正常使用,首先就需要配置它的核心配置文件。官方明确指出应将该文件命名为:mybatis-config.xml
该文件实现了什么功能,又如何实现的,咱今天就来侃一侃。
文章目录
- configuration
- properties
- setting
- typeAliases
- 其他配置
- environments
- databaseIdProvider
- mappers
- 写在最后
MyBatis 的配置文件包含了会深深影响 MyBatis 行为的设置和属性信息。
配置文档的顶层结构如下:
接下来,便根据配置文件顶层结构分别进行解析。
configuration
< configuration >标签便是包含上图所给的所有标签的总标签。所有配置内容均需包含在它的标签体内。
properties
< properties >标签中的属性可以在外部进行配置,并可以进行动态替换。既可以在典型的 Java 属性文件中配置这些属性,亦可以在< properties >元素的子元素中设置。
举个栗子:在核心配置文件中引入外部配置文件。
db.properties
driver = com.mysql.cj.jdbc.Driver
url = jdbc:mysql://localhost:3306/mybatis?&useSSL=false&serverTimezone=UTC&allowPublicKeyRetrieval=true
username = root
password = root
要想在核心配置文件中引入 db.properties 文件,可直接在配置文件中引入:
<!--此处引入外部配置文件,参数可不写,直接写为自闭合形式-->
<properties resource="db.properties"/>
注意事项:
配置文件中,属性具有自身的读取顺序:
首先,读取在 properties 元素体内指定的属性。然后根据 properties 元素中的 resource 属性读取类路径下属性文件,或根据 url 属性指定的路径读取属性文件,并覆盖之前读取过的同名属性。
最后,读取作为方法参数传递的属性,并覆盖之前读取过的同名属性。
在对外部配置文件进行引入时,也可以对其进行一些操作:
setting
< setting >标签是 MyBatis 中极为重要的调整设置,它们会改变 MyBatis 的运行时行为。在官方文档中有详尽的记录,不再赘述。
常用的设置基本用作增加可读性以及实现日志功能。
typeAliases
它仅是为 Java 类型设置一个短的名字,只和XML配置有关。存在意义便是用来减少类完全限定名的冗余。
起别名有两种方式,分别为对单个类起别名 和 指定一个包,MyBatis会在包名下自动搜索需要的 Java Bean,默认将其所有实体类起名为 类名 (首字母小写)。
<!--为单个实体类起别名-->
<typeAliases>
<typeAlias type="com.wu.pojo.User" alias="User"/>
</typeAliases>
实体类比较少时,推荐该方案。
<!--为整个包下的所有实体类起别名-->
<typeAliases>
<typeAlias name="com.wu.pojo"/>
</typeAliases>
实体类十分多时,推荐此方式。
注意事项:
- 为单个实体类起别名时,可自定义别名。
- 为整个包下所有实体类起别名则无法自定义别名。
(若必须自定义,可通过在所需实体类中增加注解实现)
举个栗子:
import org.apache.ibatis.type.Alias;
//通过标签自定义别名
@Alias("user")
public class User {
private int id;
private String name;
private String password;
}
其他配置
- typeHandlers(类型处理器)
- objectFactory(对象工厂)
- plugins(插件)
在官方文档中均有细致说明,不是分析的重点,此处不作说明。
environments
MyBatis可以配置适应多种环境,但每个SqlSession实例只能选择一种环境。所以,要学会使用配置多套运行环境。
MyBatis默认的事务管理器是 JDBC,< transactionManager >标签下的 type 值为 “JDBC”
MyBatis连接池为 POOLED ,所以:< dataSource > type=“POOLED”
< propery >标签内放置的便是与数据库连接的具体数据,可根据个人数据库信息作更改。
<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>
databaseIdProvider
数据库厂商标识,MyBatis可根据不同的数据库厂商执行不同的语句,这种多厂商的支持是基于映射语句中的 databaseId 属性。 MyBatis 会加载带有匹配当前数据库 databaseId 属性和所有不带 databaseId 属性的语句。
如果同时找到带有 databaseId 和不带 databaseId 的相同语句,则后者会被舍弃。
为支持多厂商特性,只需在核心配置文件中加入 < databaseIdProvider > 即可:
<databaseIdProvider type="DB_VENDOR" />
mappers
既然 MyBatis 的行为已经由上述元素配置完了,现在就要来定义 SQL 映射语句了。 但首先,需要告诉 MyBatis 到哪里去找到这些语句。 因为Java并没有行之有效的方案来解决这个问题,因此就需要我们手动输入mapper接口路径来进行绑定和注册。
同样,它有两种方式:
第一种:通过XML注册
<!--每一个Mapper.xml都需要在MyBatis核心配置文件中注册-->
<mappers>
<!--每级目录之间的分隔用 '/' 实现-->
<mapper resource="com/wu/dao/UserMapper.xml"/>
</mappers>
要注意,resource 属性间的层级路径要通过 '/'来实现,配置文件的分级格式和普通代码并不相同。
第二种:通过 class 文件注册
<mappers>
<!--每级目录之间的分隔用 '.' 实现-->
<mapper resource="com.wu.dao.UserMapper"/>
</mappers>
注意事项:
- 接口和它的Mapper配置必须同名
- 接口和它的Mapper配置文件必须在同一包下
写在最后
最后,附上一份包含头文件的完整 mybatis-config.xml 文件,实现了标准日志工厂及开启全局缓存。
具体内容看官们自行修改,下次再见。
<?xml version="1.0" encoding="UTF8" ?>
<!DOCTYPE configuration
PUBLIC "-//mybatis.org//DTD Config 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-config.dtd">
<!--configuration核心配置文件-->
<configuration>
<!--此处引入外部配置文件,参数可不写,直接写为自闭合形式-->
<properties resource="db.properties"/>
<settings>
<!--标准的日志工厂实现-->
<setting name="logImpl" value="STDOUT_LOGGING"/>
<!--显式的开启全局缓存-->
<setting name="cacheEnabled" value="true"/>
</settings>
<!--可以给实体类起别名-->
<typeAliases>
<typeAlias type="com.wu.pojo.User" alias="User"/>
</typeAliases>
<!--环境配置-->
<environments default="development">
<environment id="development">
<transactionManager type="JDBC"/>
<dataSource type="POOLED">
<!--此处值从db.properties文件中取出-->
<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="com/wu/dao/UserMapper.xml"/>
</mappers>
</configuration>
最后
以上就是真实衬衫为你收集整理的MyBatis基本要素—核心配置文件(详解)configuration写在最后的全部内容,希望文章能够帮你解决MyBatis基本要素—核心配置文件(详解)configuration写在最后所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复