前面说了搭建MyBatis环境,本文是对MyBatis使用时的核心配置文件的一些说明
目录
- environments
- transactionManager
- DataSource
- 引入jdbc.properties
- typeAliases
- settings
- 下划线转驼峰
- 延迟加载
- Mappers
- IDEA 核心配置模板及解释
environments
可以配置多个环境,比如测试环境和开发环境 ; 使用id区分,不能重复。
<environments default="development">
<environment id="development">
<!-- 事务管理器 -->
<transactionManager type="JDBC"></transactionManager>
<!-- 数据源 即连接池-->
<dataSource type="POOLED">
<property name="driver" value="com.mysql.cj.jdbc.Driver"/>
<property name="url" value="jdbc:mysql://localhost:3306/mybatis?serverTimezone=GMT"/>
<property name="username" value="root"/>
<property name="password" value="123456"/>
</dataSource>
</environment>
<environment id="test">
<!-- 事务管理器 -->
<transactionManager type="JDBC"></transactionManager>
<!-- 数据源 即连接池-->
<dataSource type="POOLED">
<property name="driver" value="com.mysql.cj.jdbc.Driver"/>
<property name="url" value="jdbc:mysql://localhost:3306/mybatis?serverTimezone=GMT"/>
<property name="username" value="root"/>
<property name="password" value="123456"/>
</dataSource>
</environment>
</environments>
transactionManager
事务管理器,使用type来设置事务管理方式。
- type JDBC:表示使用JDBC原生事务管理方式,即可以手动的开启关闭事务,手动的提交和回滚。 MANAGED:被管理的,例如交给Spring管理。
DataSource
设置数据源,使用type 设置数据源的类型。
- type POOLED:使用数据库连接池 UNPOOLED:不使用数据库连接池,链接直接重新创建 JNDI:表示使用上下文当中的数据源(了解即可)
引入jdbc.properties
resources 下创建 jdbc.properties 文件
代码语言:javascript复制jdbc.url=jdbc:mysql://localhost:3306/mybatis?serverTimezone=GMT
jdbc.driver=com.mysql.cj.jdbc.Driver
jdbc.user=root
jdbc.password=123456
核心配置文件当中引入
代码语言:javascript复制<?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>
<!-- 引入 properties 文件 -->
<properties resource="jdbc.properties"></properties>
<environments default="development">
<environment id="development">
<transactionManager type="JDBC"></transactionManager>
<dataSource type="POOLED">
<property name="driver" value="${jdbc.driver}"/>
<property name="url" value="${jdbc.url}"/>
<property name="username" value="${jdbc.user}"/>
<property name="password" value="${jdbc.password}"/>
</dataSource>
</environment>
</environments>
<mappers>
<mapper resource="com/kailong/mappers/UserMapper.xml"></mapper>
</mappers>
</configuration>
typeAliases
类型别名,在 Mapper 的 resultType 属性中可以使用简单类型别名
代码语言:javascript复制<?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>
<!-- 引入 properties 文件 -->
<properties resource="jdbc.properties"></properties>
<!-- 别名 -->
<typeAliases>
<typeAlias type="com.kailong.pojo.User" alias="user"></typeAlias>
<!-- 也可以指定一个包下面的别名, 且不区分大小写, 跟上方 typeLias 不能同时使用 -->
<package name="com.kailong.pojo"></package>
</typeAliases>
<!-- ... -->
</configuration>
在 Mapper.xml 文件中使用
代码语言:javascript复制<select id="getAllUser" resultType="user">
SELECT * FROM t_user;
</select>
settings
核心全局设置, 下面是几个常用的
下划线转驼峰
代码语言:javascript复制<settings>
<!-- 下划线 自动映射 驼峰 -->
<setting name="mapUnderscoreToCamelCase" value="true"/>
</settings>
延迟加载
如果某个查询不想使用懒加载,则在 association 和 collection 标签当中设置 fetchType 即可。
代码语言:javascript复制<settings>
<!-- 延迟加载
LazyLoadingEnabled: true,开启延迟加载
aggressiveLazyLoading: false, 开启按需加载
-->
<setting name="lazyLoadingEnabled" value="true"/>
<setting name="aggressiveLazyLoading" value="false"/>
</settings>
Mappers
引入 映射文件的, 分为单个引入 和 包扫描的方式
代码语言:javascript复制<mappers>
<mapper resource="mappers/UserMapper.xml"></mapper>
<!--
包扫描方式, 两个条件
1. Mapper 接口和 Mapper.xml 必须在一个包下
2. Mapper 接口必须和 Mapper.xml 名字一致
-->
<package name="com.kailong.mapper"/>
</mappers>
注意:resouces 下创建对应的目录放mapper.xml 文件
IDEA 核心配置模板及解释
代码语言:javascript复制<?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>
<!--
MyBatis核心配置文件中,标签的顺序:
properties?,settings?,typeAliases?,typeHandlers?,
objectFactory?,objectWrapperFactory?,reflectorFactory?,
plugins?,environments?,databaseIdProvider?,mappers?
-->
<!--引入properties文件-->
<properties resource="jdbc.properties" />
<!--设置类型别名-->
<typeAliases>
<!--
typeAlias:设置某个类型的别名
属性:
type:设置需要设置别名的类型
alias:设置某个类型的别名,若不设置该属性,那么该类型拥有默认的别名,即类名
且不区分大小写
-->
<!--<typeAlias type="com.kailong.pojo.User"></typeAlias>-->
<!--以包为单位,将包下所有的类型设置默认的类型别名,即类名且不区分大小写-->
<package name="com.kailong.pojo"/>
</typeAliases>
<!--
environments:配置多个连接数据库的环境
属性:
default:设置默认使用的环境的id
-->
<environments default="development">
<!--
environment:配置某个具体的环境
属性:
id:表示连接数据库的环境的唯一标识,不能重复
-->
<environment id="development">
<!--
transactionManager:设置事务管理方式
属性:
type="JDBC|MANAGED"
JDBC:表示当前环境中,执行SQL时,使用的是JDBC中原生的事务管理方式,事
务的提交或回滚需要手动处理
MANAGED:被管理,例如Spring
-->
<transactionManager type="JDBC"/>
<!--
dataSource:配置数据源
属性:
type:设置数据源的类型
type="POOLED|UNPOOLED|JNDI"
POOLED:表示使用数据库连接池缓存数据库连接
UNPOOLED:表示不使用数据库连接池
JNDI:表示使用上下文中的数据源
-->
<dataSource type="POOLED">
<!--设置连接数据库的驱动-->
<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>
</environment>
<environment id="test">
<transactionManager type="JDBC"/>
<dataSource type="POOLED">
<property name="driver" value="com.mysql.cj.jdbc.Driver"/>
<property name="url"
value="jdbc:mysql://localhost:3306/mybatis?serverTimezone=GMT"/>
<property name="username" value="root"/>
<property name="password" value="123456"/>
</dataSource>
</environment>
</environments>
<!--引入映射文件-->
<mappers>
<!--<mapper resource="mappers/UserMapper.xml"/>-->
<!--
以包为单位引入映射文件
要求:
1、mapper接口所在的包要和映射文件所在的包一致
2、mapper接口要和映射文件的名字一致
-->
<package name="com.kailong.mapper"/>
</mappers>
</configuration>
公众号本文地址:https://mp.weixin.qq.com/s/zfVhUXCo_N43rB-THvSeaw 欢迎关注公众号:愚生浅末。