mybatis学习(四)——config全局配置文件解析

时间:2024-09-20 19:35:50

在全集配置文件中引入dtd约束“http://mybatis.org/dtd/mybatis-3-config.dtd”,主要有以下几个标签,现在详细解释下这几个标签的使用

mybatis学习(四)——config全局配置文件解析

1、properties属性----引入外部properties配置文件

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE configuration PUBLIC "-//mybatis.org//DTD Config 3.0//EN" "http://mybatis.org/dtd/mybatis-3-config.dtd">
<configuration>
<!-- 1、mybatis使用properties来引入外部properties配置文件的内容
resource 引入类路径下资源
url 引入网络路径或磁盘路径下资源 -->
<properties resource="db.properties"></properties> <environments default="development">
<environment id="development">
<transactionManager type="JDBC" />
<!-- 配置数据库连接信息 -->
<dataSource type="POOLED">
<property name="driver" value="${jdbc.driver}" />
<property name="url" value="${jdbc.url}" />
<property name="username" value="${jdbc.name}" />
<property name="password" value="${jdbc.password}" />
</dataSource>
</environment>
</environments>
<mappers>
<mapper resource="com/pjf/mybatis/mapper/hotelMapper.xml"></mapper>
</mappers>
</configuration>

db.properties文件

jdbc.driver=com.mysql.jdbc.Driver
jdbc.url=jdbc:mysql://localhost:3306/spring_mybatis
jdbc.name=root
jdbc.password=tuniu520

相当有之前写的,这里的jdbc连接信息写在datasource中的property属性下,没有引入外部配置文件

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE configuration PUBLIC "-//mybatis.org//DTD Config 3.0//EN" "http://mybatis.org/dtd/mybatis-3-config.dtd">
<configuration>
<environments default="development">
<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/spring_mybatis" />
<property name="username" value="root" />
<property name="password" value="tuniu520" />
</dataSource>
</environment>
</environments>
<mappers>
<mapper resource="com/pjf/mybatis/mapper/hotelMapper.xml"></mapper>
</mappers>
</configuration>

2、settings 运行时行为设置

可查看mybatis文档,settings有很多配置项,如

mybatis学习(四)——config全局配置文件解析

这里试验下mapUnderscoreToCamelCase,可以自动完成hotelName到数据库中字段hotel_name的转换

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE configuration PUBLIC "-//mybatis.org//DTD Config 3.0//EN" "http://mybatis.org/dtd/mybatis-3-config.dtd">
<configuration>
<!-- 1、mybatis使用properties来引入外部properties配置文件的内容
resource 引入类路径下资源
url 引入网络路径或磁盘路径下资源 -->
<properties resource="db.properties"></properties>
<!-- 2、settings包含很多重要的设置项
setting标识具体的设置项
name表示设置项的名字
value表示设置项的值
-->
<settings>
<setting name="mapUnderscoreToCamelCase" value="true" />
</settings>
<environments default="development">
<environment id="development">
<transactionManager type="JDBC" />
<!-- 配置数据库连接信息 -->
<dataSource type="POOLED">
<property name="driver" value="${jdbc.driver}" />
<property name="url" value="${jdbc.url}" />
<property name="username" value="${jdbc.name}" />
<property name="password" value="${jdbc.password}" />
</dataSource>
</environment>
</environments>
<mappers>
<mapper resource="com/pjf/mybatis/mapper/hotelMapper.xml"></mapper>
</mappers>
</configuration>

之前写的sql语句可以直接修改成

<select id="getHotel" resultType="com.pjf.mybatis.po.Hotel">
select id,hotel_name as hotelName, hotel_address as hotelAddress, price from hotel
where id=#{id}
</select>

修改为
<select id="getHotel" resultType="com.pjf.mybatis.po.Hotel">
select * from hotel where id=#{id}
</select>

mybatis会自动完成驼峰转换

3、typeAliases别名配置

查看代码中3的注解

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE configuration PUBLIC "-//mybatis.org//DTD Config 3.0//EN" "http://mybatis.org/dtd/mybatis-3-config.dtd">
<configuration> <!-- 1、mybatis使用properties来引入外部properties配置文件的内容
resource 引入类路径下资源
url 引入网络路径或磁盘路径下资源 -->
<properties resource="db.properties"></properties> <!-- 2、settings包含很多重要的设置项
setting标识具体的设置项
name表示设置项的名字
value表示设置项的值 -->
<settings>
<setting name="mapUnderscoreToCamelCase" value="true" />
</settings> <!-- 3、typeAliases 为java类型起别名,别名不区分大小写
typeAlias 为某个具体的java类型取别名
type java类的全类名,默认别名就是类名小写
alias 自定义别名 -->
<typeAliases>
<typeAlias type="com.pjf.mybatis.po.Hotel" alias="hotel" />
<!-- package为某个包下面所有类批量起别名
name 表示包的名称 默认别名为类名小写
这里重复配置了Hotel类,复制的时候注掉一种配置-->
<package name="com.pjf.mybatis.po" />
</typeAliases> <environments default="development">
<environment id="development">
<transactionManager type="JDBC" />
<!-- 配置数据库连接信息 -->
<dataSource type="POOLED">
<property name="driver" value="${jdbc.driver}" />
<property name="url" value="${jdbc.url}" />
<property name="username" value="${jdbc.name}" />
<property name="password" value="${jdbc.password}" />
</dataSource>
</environment>
</environments>
<mappers>
<mapper resource="com/pjf/mybatis/mapper/hotelMapper.xml"></mapper>
</mappers>
</configuration>

已经为许多常见的 Java 类型内建了相应的类型别名。它们都是大小写不敏感的,需要注意的是由基本类型名称重复导致的特殊处理,8种基本数据类型类型别名是下划线加数据类型。

4、typeHandlers 类型处理器

将java中的类型和数据库中的类型进行映射

<!-- typeHandlers 类型处理器
mybatis3.4之后,这些类型处理器都是自动注册的
-->
<typeHandlers>
<typeHandler handler="BooleanTypeHandler"/>
</typeHandlers>

可以填写以下处理器

mybatis学习(四)——config全局配置文件解析

5、environments环境配置

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE configuration PUBLIC "-//mybatis.org//DTD Config 3.0//EN" "http://mybatis.org/dtd/mybatis-3-config.dtd">
<configuration> <!-- 1、mybatis使用properties来引入外部properties配置文件的内容
resource 引入类路径下资源
url 引入网络路径或磁盘路径下资源 -->
<properties resource="db.properties"></properties> <!-- 2、settings包含很多重要的设置项
setting标识具体的设置项
name表示设置项的名字
value表示设置项的值 -->
<settings>
<setting name="mapUnderscoreToCamelCase" value="true" />
</settings> <!-- 3、typeAliases 为java类型起别名,别名不区分大小写
typeAlias 为某个具体的java类型取别名
type java类的全类名,默认别名就是类名小写
alias 自定义别名 -->
<typeAliases>
<typeAlias type="com.pjf.mybatis.po.Hotel" alias="hotel" />
<!-- package为某个包下面所有类批量起别名
name 表示包的名称 默认别名为类名小写
<package name="com.pjf.mybatis.po" />
-->
</typeAliases> <!-- 4、typeHandlers 类型处理器-->
<typeHandlers>
<typeHandler handler=""/>
</typeHandlers> <!-- 5、environments环境配置,可以配置多种环境 default指定使用某种环境,可以达到快速切换
environment配置一个具体的环境信息,必须有如下两个标签,id表示当前环境的唯一标识
transactionManager 事物管理器
type 事物管理器的类型 有两种取值
JDBC
managed
dataSource 数据源
type 有三种[UNPOOLED|POOLED|JNDI]
-->
<environments default="development">
<environment id="test">
<transactionManager type="JDBC" />
<!-- 配置数据库连接信息 -->
<dataSource type="POOLED">
<property name="driver" value="${jdbc.driver}" />
<property name="url" value="${jdbc.url}" />
<property name="username" value="${jdbc.name}" />
<property name="password" value="${jdbc.password}" />
</dataSource>
</environment> <environment id="development">
<transactionManager type="JDBC" />
<!-- 配置数据库连接信息 -->
<dataSource type="POOLED">
<property name="driver" value="${jdbc.driver}" />
<property name="url" value="${jdbc.url}" />
<property name="username" value="${jdbc.name}" />
<property name="password" value="${jdbc.password}" />
</dataSource>
</environment>
</environments> <mappers>
<mapper resource="com/pjf/mybatis/mapper/hotelMapper.xml"></mapper>
</mappers>
</configuration>

6、mappers  sql映射文件注册

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE configuration PUBLIC "-//mybatis.org//DTD Config 3.0//EN" "http://mybatis.org/dtd/mybatis-3-config.dtd">
<configuration> <!-- 1、mybatis使用properties来引入外部properties配置文件的内容
resource 引入类路径下资源
url 引入网络路径或磁盘路径下资源 -->
<properties resource="db.properties"></properties> <!-- 2、settings包含很多重要的设置项
setting标识具体的设置项
name表示设置项的名字
value表示设置项的值 -->
<settings>
<setting name="mapUnderscoreToCamelCase" value="true" />
</settings> <!-- 3、typeAliases 为java类型起别名,别名不区分大小写
typeAlias 为某个具体的java类型取别名
type java类的全类名,默认别名就是类名小写
alias 自定义别名 -->
<typeAliases>
<typeAlias type="com.pjf.mybatis.po.Hotel" alias="hotel" />
<!-- package为某个包下面所有类批量起别名
name 表示包的名称 默认别名为类名小写
<package name="com.pjf.mybatis.po" />
-->
</typeAliases> <!-- 4、typeHandlers 类型处理器-->
<typeHandlers>
<typeHandler handler=""/>
</typeHandlers> <!-- 5、environments环境配置,可以配置多种环境 default指定使用某种环境,可以达到快速切换
environment配置一个具体的环境信息,必须有如下两个标签,id表示当前环境的唯一标识
transactionManager 事物管理器
type 事物管理器的类型 有两种取值
JDBC
managed
dataSource 数据源
type 有三种[UNPOOLED|POOLED|JNDI]
-->
<environments default="development">
<environment id="test">
<transactionManager type="JDBC" />
<!-- 配置数据库连接信息 -->
<dataSource type="POOLED">
<property name="driver" value="${jdbc.driver}" />
<property name="url" value="${jdbc.url}" />
<property name="username" value="${jdbc.name}" />
<property name="password" value="${jdbc.password}" />
</dataSource>
</environment> <environment id="development">
<transactionManager type="JDBC" />
<!-- 配置数据库连接信息 -->
<dataSource type="POOLED">
<property name="driver" value="${jdbc.driver}" />
<property name="url" value="${jdbc.url}" />
<property name="username" value="${jdbc.name}" />
<property name="password" value="${jdbc.password}" />
</dataSource>
</environment>
</environments> <!--6、 mappers将sql映射注册到全局配置文件中
mapper注册一个sql映射
1、注册配置文件
resource引用类路径下文件
url 引用网络上或磁盘路径下文件
2、注册mapper接口
class 有映射文件,接口和映射文件必须同名,而且放在同一个路径里
如果没有映射文件,sql语句使用注解的方式,就需要注册接口了
3、package批量注册
使用批量注册, 接口和映射文件必须同名,而且放在同一个路径里
-->
<mappers>
<mapper resource="com/pjf/mybatis/mapper/hotelMapper.xml"></mapper>
<mapper class=""/>
<package name="com.pjf.mybatis.po"/>
</mappers>
</configuration>

7、databaseIdProvider多数据库支持

MyBatis 可以根据不同的数据库厂商执行不同的语句,这种多厂商的支持是基于映射语句中的 databaseId 属性。 MyBatis 会加载不带 databaseId 属性和带有匹配当前数据库 databaseId 属性的所有语句。 如果同时找到带有 databaseId 和不带 databaseId 的相同语句,则后者会被舍弃。

<databaseIdProvider type="DB_VENDOR"></databaseIdProvider>

8、plugins 插件

MyBatis 允许你在已映射语句执行过程中的某一点进行拦截调用。

<plugins>
<plugin interceptor=""></plugin>
</plugins>

注:这些标签编写是有先后顺序的,可以吧鼠标放在configuration上,就可以看到顺序了

(properties?, settings?, typeAliases?, typeHandlers?, objectFactory?, objectWrapperFactory?, reflectorFactory?, plugins?, environments?, databaseIdProvider?, mappers?)