MyBatis核心配置文件详解

2022-12-19 14:52:00 浏览数 (2)

前面说了搭建MyBatis环境,本文是对MyBatis使用时的核心配置文件的一些说明

目录

  • environments
    • transactionManager
    • DataSource
  • 引入jdbc.properties
  • typeAliases
  • settings
    • 下划线转驼峰
    • 延迟加载
  • Mappers
  • IDEA 核心配置模板及解释

environments

可以配置多个环境,比如测试环境和开发环境 ; 使用id区分,不能重复。

代码语言:javascript复制
    <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 欢迎关注公众号:愚生浅末。

0 人点赞