• 博客园logo
  • 会员
  • 众包
  • 新闻
  • 博问
  • 闪存
  • 赞助商
  • HarmonyOS
  • Chat2DB
    • 搜索
      所有博客
    • 搜索
      当前博客
  • 写随笔 我的博客 短消息 简洁模式
    用户头像
    我的博客 我的园子 账号设置 会员中心 简洁模式 ... 退出登录
    注册 登录
思想人生从关注生活开始
博客园    首页    新随笔    联系   管理    订阅  订阅

MyBatis配置文件mybatis-config配置详解-MyBatis从入门到进阶系列

1. 定义

MyBatis的配置文件是一个XML文件,其默认名称为mybatis-config.xml,用于配置和定制化MyBatis的运行时行为。比如可以用于配置数据库连接、属性、类型别名、类型处理器、插件、环境配置、映射器(mapper.xml)等信息。

2. 配置概述

2.1. 主要包括以下部分

configuration元素:整个配置文件的根元素,包含多个子元素;

properties元素:用于配置属性,可以通过${}占位符引用属性值;

settings元素:用于配置MyBatis的全局设置,如缓存策略、延迟加载等;

typeAliases元素:用于配置类型别名,可以将Java类的全限定名映射成简短的别名,方便在XML文件中使用;

typeHandlers元素:用于配置类型处理器,可以将Java对象和数据库中的数据进行转换;

environments元素:用于配置环境,包括数据源和事务管理器;

mappers元素:用于配置Mapper接口,包括XML映射文件和注解方式的映射;

plugins元素:用于配置插件,可以在执行SQL语句前后进行一些自定义操作。

2.2. 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 resource="db.properties" />
<typeAliases>
<typeAlias type="com.example.User" alias="User" />
</typeAliases>
<environments default="development">
<environment id="development">
<transactionManager type="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>
<mappers>
<mapper resource="com/example/mapper/UserMapper.xml" />
</mappers>
</configuration>

其中,properties元素引用了db.properties文件中的属性值。typeAliases元素将com.example.User映射成了User别名。environments元素配置了开发环境的数据源和事务管理器。mappers元素引用了UserMapper.xml映射文件。

 

3. 配置详解

3.1. properties元素的详细配置

properties元素用于配置属性,可以通过${}占位符引用属性值。properties元素支持多种配置方式,包括properties子元素、properties文件等。其中,db.properties文件包含jdbc.driver、jdbc.url、jdbc.username、jdbc.password属性值。

<properties resource="db.properties" />

<properties>

    <property name="jdbc.driver" value="com.mysql.jdbc.Driver" />

    <property name="jdbc.url" value="jdbc:mysql://localhost:3306/mybatis" />

    <property name="jdbc.username" value="root" />

    <property name="jdbc.password" value="123456" />

</properties>

3.1.1.属性配置

MyBatis的属性配置是一个properties文件,用于存储一些全局的配置参数。这些参数可以在MyBatis的配置文件中通过${key}的方式进行引用。在MyBatis中,属性配置文件的命名通常为mybatis.properties,位于类路径的根目录下,也可以通过在mybatis-config.xml中配置来指定属性配置文件的路径。属性配置文件的基本结构如下:

jdbc.driver=com.mysql.jdbc.Driver

jdbc.url=jdbc:mysql://localhost:3306/mybatis

jdbc.username=root

jdbc.password=123456

 

其中,jdbc.driver、jdbc.url、jdbc.username、jdbc.password是全局的配置参数,可以在MyBatis的配置文件中进行引用。

 

3.2. typeAliases元素的详细配置

typeAliases元素用于配置类型别名,可以将Java类的全限定名映射成简短的别名,方便在XML文件中使用。typeAliases元素支持多种配置方式,包括typeAlias元素、package元素等。

<typeAliases>

    <typeAlias type="com.example.User" alias="User" />

    <package name="com.example.pojo" />

</typeAliases>

3.3. environments元素的详细配置

environments元素用于配置环境,包括数据源和事务管理器。environments元素可以配置多个环境,其中一个环境可以被指定为默认环境。每个环境包含一个transactionManager元素和一个dataSource元素。例如:

<environments default="development">

    <environment id="development">

        <transactionManager type="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="production">

        <transactionManager type="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>

3.4. transactionManager元素


用于配置事务管理器,其中,type属性用于指定事务管理器的类型,包括JDBC和MANAGED两种类型。JDBC类型的事务管理器需要由应用程序自己处理事务的提交和回滚,而MANAGED类型的事务管理器则是由应用服务器来管理事务的提交和回滚。 在transactionManager元素中,可以使用property元素来设置其他相关属性。例如,可以设置事务的隔离级别、超时时间等。具体的属性设置可以参考MyBatis的官方文档。

<transactionManager 

type="[JDBC | MANAGED]"> <property name="..." value="..."/> 

</transactionManager>

 

3.5. objectFactory元素的配置

objectFactory元素用于配置对象工厂,可以自定义对象的创建方式。其中,MyObjectFactory是自定义的对象工厂类,property1和property2是对象工厂类的属性。

<objectFactory type="com.example.MyObjectFactory">

    <property name="property1" value="value1" />

    <property name="property2" value="value2" />

</objectFactory>

3.6. databaseIdProvider元素的配置

databaseIdProvider元素用于配置数据库厂商标识符,可以根据不同的数据库类型执行不同的SQL语句。其中,DB_VENDOR表示根据数据库厂商标识符进行匹配,Oracle和MySQL分别为两个数据库的标识符。

<databaseIdProvider type="DB_VENDOR">

    <property name="Oracle" value="oracle" />

    <property name="MySQL" value="mysql" />

</databaseIdProvider>

 

3.7. bind元素的详细配置

bind元素用于绑定参数,可以在SQL使用#{name,javaType=int,jdbcType=INTEGER}

方式引用绑定参数的值。其中,#{age,javaType=int,jdbcType=INTEGER}表示引用绑定参数age的值,javaType表示参数的Java类型,jdbcType表示参数的JDBC类型

<select id="getUser" resultType="com.example.User">

    <bind name="age" value="'20'" />

    SELECT * FROM user WHERE age = #{age,javaType=int,jdbcType=INTEGER}

</select>

3.8. typeHandler元素的详细配置

typeHandler元素用于配置类型处理器,可以将Java对象和数据库中的数据进行转换。typeHandler元素支持多种配置方式,包括class属性、javaType和jdbcType属性、handler属性等。例如:

<typeHandlers>

<typeHandler handler="com.example.MyTypeHandler" 

javaType="java.lang.String" jdbcType="VARCHAR" />

</typeHandlers>

3.9. settings元素的详细配置

settings元素用于配置MyBatis的全局设置,如缓存策略、延迟加载等。settings元素包含多个子元素,如cacheEnabled、lazyLoadingEnabled、logImpl等。例如:

<settings>

    <setting name="cacheEnabled" value="true" />

    <setting name="lazyLoadingEnabled" value="true" />

    <setting name="logImpl" value="LOG4J2" />

</settings>

3.10. plugins元素的详细配置

plugins元素用于配置插件,可以在执行SQL语句前后进行一些自定义操作。plugins元素包含多个子元素,每个子元素包含一个interceptor元素和一个property元素。其中,MyPlugin是自定义的插件类,property1和property2是插件类的属性:

<plugins>

    <plugin interceptor="com.example.MyPlugin">

        <property name="property1" value="value1" />

        <property name="property2" value="value2" />

    </plugin>

</plugins>

3.11. mappers元素的详细配置

mappers元素用于配置Mapper接口,包括XML映射文件和注解方式的映射。mappers元素支持多种配置方式,包括resource属性(引用XML映射文件)、class属性(引用Mapper接口)、package属性(扫描指定包下的所有Mapper接口)等。例如:

<mappers>

    <mapper resource="com/example/mapper/UserMapper.xml" />

    <mapper class="com.example.mapper.OrderMapper" />

    <package name="com.example.mapper" />

</mappers>

3.11.1. 映射文件

MyBatis的映射文件是一个XML文件,用于配置SQL语句和结果映射规则。它将Java的POJO对象和数据库中的表进行映射,提供了CRUD操作的SQL语句和参数映射。在MyBatis中,映射文件的命名通常为Mapper.xml,位于类路径的某个目录下。映射文件的基本结构如下:

 

<?xml version="1.0" encoding="UTF-8" ?>

<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">

<mapper namespace="com.example.mapper.UserMapper">

  <!-- resultMap元素用于配置结果映射规则 -->

  <resultMap id="userMap" type="com.example.User">

    <id column="id" property="id" />

    <result column="name" property="name" />

    <result column="age" property="age" />

  </resultMap>

  <!-- select元素用于配置查询语句 -->

  <select id="getUser" resultMap="userMap">

    SELECT * FROM user WHERE id = #{id}

  </select>

  <!-- insert元素用于配置插入语句 -->

  <insert id="addUser" parameterType="com.example.User">

    INSERT INTO user(name, age) VALUES(#{name}, #{age})

  </insert>

  <!-- update元素用于配置更新语句 -->

  <update id="updateUser" parameterType="com.example.User">

    UPDATE user SET name = #{name}, age = #{age} WHERE id = #{id}

  </update>

  <!-- delete元素用于配置删除语句 -->

  <delete id="deleteUser" parameterType="int">

    DELETE FROM user WHERE id = #{id}

  </delete>

</mapper>

 

其中,resultMap元素用于配置结果映射规则;select元素用于配置查询语句;insert元素用于配置插入语句;update元素用于配置更新语句;delete元素用于配置删除语句。

 

posted @ 2023-03-09 19:59  JackYang  阅读(13706)  评论(2)    收藏  举报
刷新页面返回顶部
博客园  ©  2004-2025
浙公网安备 33010602011771号 浙ICP备2021040463号-3