• MyBatis配置文件(mybatis-config.xml)


    MyBatis 配置文件的结构如下

    1. "1.0" encoding="utf-8"?>
    2. configuration PUBLIC "-//mybatis.org//DTD Config 3.0//EN"
    3. "http://mybatis.org/dtd/mybatis-3-config.dtd">
    4. <configuration>
    5. <properties />
    6. <settings />
    7. <typeAliases />
    8. <typeHandlers />
    9. <objectFactory />
    10. <plugins />
    11. <environments>
    12. <environment>
    13. <transactionManager />
    14. <dataSource />
    15. environment>
    16. environments>
    17. <databaseIdProvider />
    18. <mappers />
    19. configuration>

    mybatis-config.xml 文件中的元素节点是有一定顺序的,节点位置必须按以上位置排序,否则会编译错误。

    configuration 元素是整个 XML 配置文件的根节点,其角色就相当于是 MyBatis 的总管,MyBatis 所有的配置信息都会存放在它里面。 

    properties标签

    properties 标签可以通过 resource 属性指定外部 properties 文件(database.properties),也可以通过 properties 子元素配置。

    1. 指定文件

    使用 properties 指定外部文件,代码如下。

    <properties resource="mybatisDemo/resources/database.properties"/>

    database.properties 用于描述数据库连接的相关配置,例如数据库驱动、连接数据库的 url、数据库用户名、数据库密码等。

    2. properties子元素配置

    通过 properties 子元素 property 配置 username 和 password 变量,然后在 environments 节点中引用这些变量 :

    1. <properties>
    2. <property name="username" value="root"/>
    3. <property name="password" value="root"/>
    4. properties>

    在 environments 节点中引用 username 和 password 变量。

    1. <environments default="development">
    2. <environment id="development">
    3. <transactionManager type="JDBC"/>
    4. <dataSource type="POOLED">
    5. <property name="driver" value="${driver}"/>
    6. <property name="url" value="${url}"/>
    7. <property name="username" value="${username}"/>
    8. <property name="password" value="${password}"/>
    9. dataSource>
    10. environment>
    11. environments>

    也可以不使用 properties 标签,直接将属性值写在 value 中。

    settings标签

    settings 标签用于配置 MyBatis 的运行时行为,它能深刻的影响 MyBatis 的底层运行,一般不需要大量配置,大部分情况下使用其默认值即可。

    settings 的配置项很多,但是真正用到的不会太多,我们把常用的配置项研究清楚就可以了。settings 常用配置项说明如下表所示

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

    配置样例:

    1. <settings>
    2. <setting name="cacheEnabled" value="true"/>
    3. <setting name="lazyLoadingEnabled" value="true"/>
    4. <setting name="multipleResultSetsEnabled" value="true"/>
    5. <setting name="useColumnLabel" value="true"/>
    6. <setting name="useGeneratedKeys" value="false"/>
    7. <setting name="autoMappingBehavior" value="PARTIAL"/>
    8. <setting name="autoMappingUnknownColumnBehavior" value="WARNING"/>
    9. <setting name="defaultExecutorType" value="SIMPLE"/>
    10. <setting name="defaultStatementTimeout" value="25"/>
    11. <setting name="defaultFetchSize" value="100"/>
    12. <setting name="safeRowBoundsEnabled" value="false"/>
    13. <setting name="mapUnderscoreToCamelCase" value="false"/>
    14. <setting name="localCacheScope" value="SESSION"/>
    15. <setting name="jdbcTypeForNull" value="OTHER"/>
    16. <setting name="lazyLoadTriggerMethods" value="equals,clone,hashCode,toString"/>
    17. settings>

    typeAliases标签

    为了不在任何地方都指定类的全限定名,我们可以使用 typeAliases 标签定义一个别名

    typeHandlers标签

    typeHandlers 主要将获取的值合理地转化为 Java 类型。在 typeHandler 中,分为 jdbcType 和 javaType,其中 jdbcType 用于定义数据库类型,而 javaType 用于定义 Java 类型,typeHandler 的作用就是承担 jdbcType 和 javaType 之间的相互转换。

    MyBatis 支持自定义处理类型,在自定义处理类型时,需要实现 org.apache.ibatis.type.TypeHandler 接口或继承 org.apache.ibatis.type.BaseTypeHandle 类。详细可参考官网:mybatis – MyBatis 3 | 配置

    environments标签

    在 environments 标签中,可以配置 MyBatis 的多套运行环境,将 SQL 映射到多个不同的数据库上。

    environment 是 environments 的子标签,用来配置 MyBatis 的一套运行环境,需指定运行环境 ID、事务管理、数据源配置等相关信息。

    我们可以通过配置多个 environment 标签来连接多个数据库,需要注意的是必须指定其中一个为默认运行环境(通过default指定)。

    environment 标签提供了两个子标签,即 transactionManager 和 dataSource。

    transactionManager标签

    MyBatis 支持两个事务管理器,即 JDBC 和 MANAGED。

    如果使用 JDBC 类型的事务管理器,则应用程序服务器负责事务管理操作,例如提交、回滚等。如果使用 MANAGED 类型的事务管理器,则应用程序服务器负责管理连接生命周期。

    dataSource标签

    用于配置数据库的连接属性,例如要连接的数据库的驱动程序名称、URL、用户名和密码等。

    dataSource 中的 type 属性用于指定数据源类型,有以下 3 种类型。

    1)UNPOOLED

    UNPOOLED 没有数据库连接池,效率低下。MyBatis 需要打开和关闭每个数据库操作的连接,它有点慢,通常应用于简单的应用程序。

    2)POOLED

    对于 POOLED 数据源类型,MyBatis 将维护一个数据库连接池。并且对于每个数据库的操作,MyBatis 都会使用连接池中的连接,并在操作完成后将它们返回到池中。减少了创建新连接所需的初始连接和身份验证时间。

    3)JNDI

    对于 JNDI 的数据源类型,MyBatis 将从 JNDI 数据源中获取连接。

    dataSource 标签示例代码如下:

    1. <dataSource type="POOLED">
    2. <property name="driver" value="com.mysql.jdbc.Driver" />
    3. <property name="url"
    4. value="jdbc:mysql://localhost:3306/test?characterEncoding=utf8" />
    5. <property name="username" value="root" />
    6. <property name="password" value="root" />
    7. dataSource>

    mappers标签

    mappers 标签用于指定 MyBatis SQL 映射文件的路径。
    mapper 是 mappers 的子标签,mapper 中的 resource 属性用于指定 SQL 映射文件的路径(类资源路径)
    例如,SQL 映射文件的名称是 Student.xml,它位于名为 net.cky.mapper 的包中,可以这样配置: 

    1. <mappers>
    2. <mapper resource="net/cky/mapper/Student.xml"/>
    3. mappers>

  • 相关阅读:
    c语言中的结构体变量
    企业大数据可视化案例专题分享-入门
    Scratch软件编程等级考试三级——20200620
    datax同步clickhouse数据到hive
    day26 java lambda
    在 Windows Server RDS 服务器 上重置 120 天宽限期
    Spring介绍
    65 编辑距离
    【译】.NET 7 中的性能改进(十二)
    STM32 cubemx hal库huart串口接收不到第一帧数据或数据全为0的问题
  • 原文地址:https://blog.csdn.net/qq_43079001/article/details/132845309