MyBatis 配置

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/configura...

<?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>  
本作品采用《CC 协议》,转载必须注明作者和本文链接
讨论数量: 0
(= ̄ω ̄=)··· 暂无内容!

讨论应以学习和精进为目的。请勿发布不友善或者负能量的内容,与人为善,比聪明更重要!