MyBatis学习笔记 —— MyBatis核心配置文件详解
Posted 程序猿杰哥
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了MyBatis学习笔记 —— MyBatis核心配置文件详解相关的知识,希望对你有一定的参考价值。
3、核心配置文件详解
id是唯一标识,不能重复,但是在真正开发过程中,不可能一个项目中同时使用两个环境,肯定会使用其中的某一个,这时候它的default就比较重要了。
default是设置我们当前使用的默认环境的id
<?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?,relectorFactory?,
plugins?,environments?,databaseIdProvider?,mapper?
-->
<!-- 引入properties文件,此后就可以在当前文件中使用$key的方式使用value -->
<properties resource="jdbc.properties"/>
<!--
typeAliases: 设置类型别名,即为某个具体的类型设置一个别名
在MyBatis的范围中,就可以使用别名表示一个具体的类型
-->
<typeAliases>
<!--
type: 设置需要起别名的类型
alias: 设置某个类型的别名
-->
<!-- <typeAlias type="com.fan.mybatis.pojo.User" alias="abc"></typeAlias> -->
<!-- 若不设置alias,当前的类型拥有默认的别名,即类名且不区分大小写 -->
<!-- <typeAlias type="com.fan.mybatis.pojo.User"></typeAlias> -->
<!-- 通过包设置类型别名,指定包下所有的类型将全部拥有默认的别名,即类名且不区分大小写 -->
<package name="com.fan.mybatis.pojo"/>
</typeAliases>
<!--
environments: 配置连接数据库的环境
属性:
default:设置默认使用的环境的id
-->
<environments default="development">
<!-- development开发环境 -->
<!--
environment: 设置一个具体的连接数据库的环境
属性:
id:设置环境的唯一标识,不能重复
-->
<environment id="development">
<!--
transactionManager: 设置事务管理器
属性:
type: 设置事务管理的方式
type="JDBC|MANAGED"
JDBC: 标识使用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>
<!-- test 测试环境 -->
<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/ssm?serverTimezone=UTC"/>
<property name="username" value="root"/>
<property name="password" value="root"/>
</dataSource>
</environment>
</environments>
<!-- 引入mybatis的映射文件 -->
<mappers>
<!-- <mapper resource="mappers/UserMapper.xml"/> -->
<!--
以包的方式引入映射文件,但是必须满足两个条件
1、mapper接口和映射文件所在的包必须一致
2、mapper接口的名字和映射文件的名字必须一致
-->
<package name="com.fan.mybatis.mapper"/>
</mappers>
</configuration>
3.1、properties
创建properties文件
选中resources,右键【New】——》【Resource Bundle】
自定义命名properties文件
配置jdbc.properties的参数
jdbc.properties
jdbc.driver=com.mysql.cj.jdbc.Driver
jdbc.url=jdbc:mysql://localhost:3306/ssm?serverTimezone=UTC
jdbc.username=root
jdbc.password=root
mybatis-config.xml中引入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>
<!-- 引入properties文件,此后就可以在当前文件中使用$key的方式使用value -->
<properties resource="jdbc.properties"/>
<!--
environments: 配置连接数据库的环境
属性:
default:设置默认使用的环境的id
-->
<environments default="development">
<!-- development开发环境 -->
<!--
environment: 设置一个具体的连接数据库的环境
属性:
id:设置环境的唯一标识,不能重复
-->
<environment id="development">
<!--
transactionManager: 设置事务管理器
属性:
type: 设置事务管理的方式
type="JDBC|MANAGED"
JDBC: 标识使用JDBC中原生的事务管理方式
MANAGED: 被管理,例如Spring
-->
<transactionManager type="JDBC"/>
<!--
dataSource: 设置数据源
属性:
type: 设置数据源的类型
type="POOLED|UNPOOLED|JNDI"
POOLED: 表示使用数据库连接池
UNPOOLED: 表示不适用数据库连接池
JNDI: 表示使用上下文中的数据源
-->
<dataSource type="POOLED">
<property name="driver" value="com.mysql.cj.jdbc.Driver"/>
<property name="url" value="jdbc:mysql://localhost:3306/ssm?serverTimezone=UTC"/>
<property name="username" value="root"/>
<property name="password" value="root"/>
</dataSource>
</environment>
<!-- test 测试环境 -->
<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/ssm?serverTimezone=UTC"/>
<property name="username" value="root"/>
<property name="password" value="root"/>
</dataSource>
</environment>
</environments>
<!-- 引入mybatis的映射文件 -->
<mappers>
<mapper resource="mappers/UserMapper.xml"/>
</mappers>
</configuration>
运行junit测试,可以看到用户查询出来,说明jdbc.properties文件正确引入到核心配置文件中了。
3.2、typeAliases
typeAliases :类型别名
为某一个具体的类型设置一个简单的名字,mybatis范围内只需要访问别名,就可以访问具体的一个类型。
比如resultType设置的是全类名,比较长,可以设置一个简短的名字访问某一个具体的类型。
mybatis-config.xml
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper
PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.fan.mybatis.mapper.UserMapper">
<!-- List<User> getAllUser() -->
<select id="getAllUser" resultType="abc">
select * from t_user
</select>
</mapper>
若不设置alias,当前的类型拥有默认的别名,即类名且不区分大小写。
通过包设置类型别名,指定包下所有的类型将全部拥有默认的别名,即类名且不区分大小写
3.3、mappers
一个表对应一个实体类,对应一个接口,对应一个映射文件。
表多的情况下,实体类、mapper接口、映射文件都会多。一个一个引入映射文件的话,如下,就显得比较麻烦。
<mappers>
<mapper resource="mappers/UserMapper.xml"/>
<mapper resource="mappers/UserMapper.xml"/>
<mapper resource="mappers/UserMapper.xml"/>
<mapper resource="mappers/UserMapper.xml"/>
</mappers
简单的方法:通过包引入映射文件
要求映射文件所在的包,一定要和mapper接口所在的包一样。
在resources目录下创建目录,和mapper接口所在的包一样。
把映射文件放入com.fan.mybatis.mapper接口中
以包的方式引入映射文件
<?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的映射文件 -->
<mappers>
<!-- <mapper resource="mappers/UserMapper.xml"/> -->
<!--
以包的方式引入映射文件,但是必须满足两个条件
1、mapper接口和映射文件所在的包必须一致
2、mapper接口的名字和映射文件的名字必须一致
-->
<package name="com.fan.mybatis.mapper"/>
</mappers>
</configuration>
运行,查询所有的用户
编译后可以看到UserMapper.xml映射文件和UserMapper接口文件在同一目录下。
以上是关于MyBatis学习笔记 —— MyBatis核心配置文件详解的主要内容,如果未能解决你的问题,请参考以下文章