10.30Mybatis配置文件及其元素

10.30Mybatis配置文件及其元素

Mybatis配置文件结构

<?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 /><!-- 属性 -->
   <settings /><!-- 设置 -->
   <typeAliases /><!-- 类型命名 -->
   <typeHandlers /><!-- 类型处理器 -->
   <objectFactory /><!-- 对象工厂 -->
   <plugins /><!-- 插件 -->
   <environments><!-- 配置环境 -->
       <environment><!-- 环境变量 -->
           <transactionManager /><!-- 事务管理器 -->
           <dataSource /><!-- 数据源 -->
       </environment>
   </environments>
   <databaseIdProvider /><!-- 数据库厂商标识 -->
   <mappers /><!-- 映射器 -->
</configuration>

注意:

  • Mybatis配置文件的元素节点是有一定顺序的,节点位置必须按以上位置排序,否则会编译错误。

XML配置文件中的重要标签

  • properties标签

  • settings标签

  • typeAliases标签

  • typeHandler标签

  • environments标签

  • transactionManager标签

  • dataSource标签

  • 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><!-- 配置 -->
   <properties /><!-- 属性 -->
   <settings /><!-- 设置 -->
   <typeAliases /><!-- 类型命名 -->
   <typeHandlers /><!-- 类型处理器 -->
   <objectFactory /><!-- 对象工厂 -->
   <plugins /><!-- 插件 -->
   <environments><!-- 配置环境 -->
       <environment><!-- 环境变量 -->
           <transactionManager /><!-- 事务管理器 -->
           <dataSource /><!-- 数据源 -->
       </environment>
   </environments>
   <databaseIdProvider /><!-- 数据库厂商标识 -->
   <mappers /><!-- 映射器 -->
</configuration>
properties标签

作用:

  • 配置文件标签

    • 使用标签元素指定外部文件

    • 值在标签中

指定外部文件:

<properties resource="MybatisStudy/resource/databases.properties" />
<!--使用resource属性引用外部的配置文件-->

值在标签中:

<properties>
<property name="username" value="junkingboy" />
   <property name="password" value="junkingboy" />
</properties>

environments节点中引用usernamepassword变量:

<environments default="test">
<environment id="test">
  <transactionManager type="JDBC" />
       <dataSource type="POOLED">
      <property name="driver" value="${driver}" />
           <property name="url" value="${url}" />
           <property name="username" value="${username}" />
           <property name="password" value="${password}" />
       </dataSource>
   </environment>
</environments>
setting标签

作用:

配置Mybatis运行时行为,影响Mybatis的底层运行。

配置项作用配置选项默认值
cacheEnabled 影响所有映射器中配置缓存的全局开关 true|false true
lazyLoadingEnabled 延迟加载的全局开关。开启时,所有关联对象都会延迟加载。在特定关联关系中可通过设置 fetchType 属性来覆盖该项的开关状态 true|false true
aggressiveLazyLoading 当启用时,对任意延迟属性的调用会使带有延迟加载属性的对象完整加载;反之,每种属性将会按需加载 true|false 3.4.1版本之后默认为false
autoMappingBehavior 指定 MyBatis 应如何自动映射列到字段或属性。 NONE 表示取消自动映射。 PARTIAL 表示只会自动映射,没有定义嵌套结果集和映射结果集。 FULL 会自动映射任意复杂的结果集(无论是否嵌套) NONE、PARTIAL、FULL PARTIAL
defaultExecutorType 配置默认的执行器。SIMPLE 是普通的执行器;REUSE 会重用预处理语句(prepared statements);BATCH 执行器将重用语句并执行批量更新 SIMPLE、REUSE、BATCH SIMPLE
mapUnderscoreToCamelCase 是否开启自动驼峰命名规则映射,即从经典数据库列名 A_COLUMN 到经典 Java 属性名 aColumn 的类似映射 true|false false
typeAliases标签

作用:

定义别名

这个作用类似于SQL当中的别名的概念。给指定包下的类指定别名

<typeAliases>
<typeAlias alias="website" type="com.junkingboy.bean" />
</typeAliases>

对同一个包下的多个类定义别名:

<typeAliases>
<package name="com.junkingboy.bean" />
</typeAliases>
<!--
这样mybatis会扫描com.junkingboy.bean包里面的类,将其第一个字母变为小写作为其别名
-->
typeHandler标签

作用:

处理器类型标签。主要作用是:将获取的值合理地转化为 Java 类型。

  • jdbcType 用于定义数据库类型

  • javaType 用于定义 Java 类型

typeHandler的作用就是承担jdbcTypejavaType之间的相互转换。

自定义类型:

要求:

实现 org.apache.ibatis.type.TypeHandler接口或继承org.apache.ibatis.type.BaseTypeHandle

举例:

类型处理器Java类型JDBC类型
BooleanTypeHandler java.lang.Boolean, boolean 数据库兼容的 BOOLEAN
ByteTypeHandler java.lang.Byte, byte 数据库兼容的 NUMERICBYTE
ShortTypeHandler java.lang.Short, short 数据库兼容的 NUMERICSMALLINT
IntegerTypeHandler java.lang.Integer, int 数据库兼容的 NUMERICINTEGER
LongTypeHandler java.lang.Long, long 数据库兼容的 NUMERICBIGINT
FloatTypeHandler java.lang.Float, float 数据库兼容的 NUMERICFLOAT
DoubleTypeHandler java.lang.Double, double 数据库兼容的 NUMERICDOUBLE
BigDecimalTypeHandler java.math.BigDecimal 数据库兼容的 NUMERICDECIMAL
environmentes标签

作用:

配置mybatis的多套运行环境,将SQL映射到多个不同的数据库上--->必须指明一套默认的运行环境

配置一套运行环境需要的标签:

  • environment

    • transactionManager--->Mybatis支持的两个事务管理器

      • JDBC类型事务管理器--->应用程序服务器负责事务管理操作,例如提交、回滚等

      • Managed类型事务管理器--->应用程序服务器负责管理连接生命周期

    • dataSource

      • 配置数据库的连接属性

      • type属性用于指定数据源类型

        • Unpooled:没有数据库连接池,Mybatis需要打开和关闭每个数据库操作的链接

        • Pooled:Mybatis维护一个数据库连接池,每个数据库的操作,MyBatis都会使用连接池中的连接,并在操作完成后将它们返回到池中。--->减少了每次创建新连接的初始化连接和身份验证的时间

        • Jndi: MyBatisJNDI数据源中获取连接。

dataSource标签示例:

<dataSource type="POOLED">
   <!-- MySQL数据库驱动 -->
   <property name="driver" value="com.mysql.jdbc.Driver" />
   <!-- 连接数据库的URL -->
   <property name="url"
       value="jdbc:mysql://localhost:3306/test?characterEncoding=utf8" />
   <property name="username" value="junkingboy" />
   <property name="password" value="junkingboy" />
</dataSource>
mappers标签

作用:

指定 MyBatis SQL映射文件的路径

子标签:

mapper

子标签中用于指定SQL映射文件路径的属性:

resource

举例:

<mappers>
<mapper resource="com/junkingboy/mapper/Website.xml" />
</mappers>
It's a lonely road!!!
原文地址:https://www.cnblogs.com/JunkingBoy/p/15514855.html