官方文档:https://mybatis.org/mybatis-3/zh/configuration.html#
properties
新建一个dbconfig.properties来存储数据库的配置信息
jdbc.driver=com.mysql.cj.jdbc.Driver
jdbc.url=jdbc:mysql://localhost:3306/mybatis?serverTimezone=UTC&characterEncoding=UTF-8
jdbc.username=root
jdbc.password=root
mybatis-config.xml内容修改如下
<?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="dbconfig.properties"></properties>
<environments default="development">
<!-- 配置 MyBatis 运行环境 -->
<environment id="development">
<!-- 配置 JDBC 事务管理 -->
<transactionManager type="JDBC"/>
<!-- POOLED 配置 JDBC 数据源连接池 -->
<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>
</environments>
<!-- 注册UserMapper.xml -->
<mappers>
<mapper resource="mapper/UserMapper.xml"/>
</mappers>
</configuration>
settings
这是 MyBatis 中极为重要的调整设置,它们会改变 MyBatis 的运行时行为。
详细文档:https://mybatis.org/mybatis-3/zh/configuration.html#settings
<?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来引入外部properties配置文件的内容
resource: 引入类路径下的资源
url: 引入网络路径或者磁盘下的资源
-->
<properties resource="dbconfig.properties"></properties>
<settings>
<!--开启自动驼峰命名规则(camel case)映射,即从经典数据库列名 A_COLUMN 到经典 Java 属性名 aColumn 的类似映射-->
<setting name="mapUnderscoreToCamelCase" value="true"/>
</settings>
<environments default="development">
<!-- 配置 MyBatis 运行环境 -->
<environment id="development">
<!-- 配置 JDBC 事务管理 -->
<transactionManager type="JDBC"/>
<!-- POOLED 配置 JDBC 数据源连接池 -->
<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>
</environments>
<!-- 注册UserMapper.xml -->
<mappers>
<mapper resource="mapper/UserMapper.xml"/>
</mappers>
</configuration>
typeAliases
类型别名是为 Java 类型设置一个短的名字。 它只和 XML 配置有关,存在的意义仅在于用来减少类完全限定名的冗余。例如:
<typeAliases>
<typeAlias alias="Author" type="domain.blog.Author"/>
<typeAlias alias="Blog" type="domain.blog.Blog"/>
<typeAlias alias="Comment" type="domain.blog.Comment"/>
<typeAlias alias="Post" type="domain.blog.Post"/>
<typeAlias alias="Section" type="domain.blog.Section"/>
<typeAlias alias="Tag" type="domain.blog.Tag"/>
</typeAliases>
当这样配置时,Blog
可以用在任何使用 domain.blog.Blog
的地方。
也可以指定一个包名,MyBatis 会在包名下面搜索需要的 Java Bean,比如:
<typeAliases>
<package name="domain.blog"/>
</typeAliases>
每一个在包 domain.blog
中的 Java Bean,在没有注解的情况下,会使用 Bean 的首字母小写的非限定类名来作为它的别名。 比如 domain.blog.Author
的别名为author
;若有注解,则别名为其注解值。见下面的例子:
@Alias("author")
public class Author {
...
}
environments
environments里面可以配置多个environment, 每一个environment指定一个唯一id来区分不同环境, 通过environments中的default属性来指定某个环境
<environments default="development">
<!-- 配置 MyBatis 运行环境 -->
<environment id="development">
<!-- 配置 JDBC 事务管理 -->
<transactionManager type="JDBC"/>
<!-- POOLED 配置 JDBC 数据源连接池 -->
<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">
<!-- 配置 JDBC 事务管理 -->
<transactionManager type="JDBC"/>
<!-- POOLED 配置 JDBC 数据源连接池 -->
<dataSource type="POOLED">
<property name="driver" value="${jdbc2.driver}"/>
<property name="url" value="${jdbc2.url}"/>
<property name="username" value="${jdbc2.username}"/>
<property name="password" value="${jdbc2.password}"/>
</dataSource>
</environment>
</environments>
mappers
注册方式一
使用相对于类路径的SQL映射文件
<mappers>
<mapper resource="mapper/UserMapper.xml"/>
</mappers>
注册方式二
使用完全限定资源定位符(URL)
<mappers>
<mapper url="file:///var/mapper/UserMapper.xml"/>
</mappers>
注册方式三
使用映射器接口实现类的完全限定类名.
这种情况需要将SQL映射文件与接口类放在同一个文件夹下面并且文件名相同.
<mappers>
<mapper class="com.example.mybatis.mapper.UserMapper"/>
</mappers>
这里需要注意的是, 默认情况下, maven不会将src/main/java下的xml文件进行打包的,需要在pom中进行设置, 如下所示.
<build>
<resources>
<!--
默认情况下, src/main/java目录下的非java文件是不会被打包的,
如果src/main/java存在一些非java的配置文件, 需要进行设置
-->
<resource>
<directory>src/main/java</directory>
<includes>
<include>**/*.xml</include>
</includes>
</resource>
</resources>
</build>
注册方式四
注册某个包路径下的所有接口.
这种情况需要将SQL映射文件与接口类放在同一个文件夹下面并且文件名相同.
<mappers>
<!-- com.example.mybatis.mapper 为一个包路径 -->
<package name="com.example.mybatis.mapper"/>
</mappers>