MyBatis之配置文件和映射文件

2023-12-28 17:09:28

系列文章目录

提示:这里可以添加系列文章的所有文章的目录,目录需要自己手动添加
MyBatis之配置文件和映射文件


提示:写完文章后,目录可以自动生成,如何生成可参考右边的帮助文档


前言

提示:这里可以添加本文要记录的大概内容:

在使用 MyBatis 框架进行数据库操作时,需要配置 MyBatis 的配置文件和映射文件。这些文件用于定义数据库连接信息、映射规则以及 SQL 语句等。
配置文件是 MyBatis 框架的核心配置文件,它包含了数据库连接信息、事务管理器配置、映射文件位置等信息。一般情况下,配置文件的名称为 mybatis-config.xml,并放置在项目的根目录下。
映射文件是用于定义数据库表与实体类之间的映射关系的文件。它包含了 SQL 查询语句、结果集映射以及参数传递等信息。映射文件的扩展名一般为 .xml,并放置在 mapper 目录下。
在使用 MyBatis 时,我们可以通过配置文件和映射文件来灵活配置数据库连接信息、映射规则以及 SQL 语句等,从而实现对数据库的高效操作。
本博客将详细介绍 MyBatis 配置文件和映射文件的生成方法,帮助读者更好地理解和使用 MyBatis 框架。


提示:以下是本篇文章正文内容,下面案例可供参考

一、配置文件

MyBatis 的配置文件是用来配置 MyBatis 框架的一些基本设置和映射关系的文件。它的主要作用是告诉 MyBatis 如何连接数据库、如何映射实体类和数据库表之间的关系等。
MyBatis 的配置文件通常是一个 XML 文件,名为 mybatis-config.xml。它位于项目的根目录下,或者可以通过配置来指定其它位置。

properties

在MyBatis配置文件中,properties标签可以通过子标签property来配置一些子元素信息,也可以配置外部的动态文件,为上下文提供相关的资源。
一般而言,MyBatis提供了3种方式使用properties,分别是:properties子元素、properties文件、程序代码传递。使用properties配置有以下优势:可以方便地修改参数,而不会引起代码的重新编译。

例如:我们可以将数据源配置写到外部的db.properties中,再使用properties标签引入外部配置文件,这样可以做到动态配置数据源。
1.编写db.properties

jdbc.driver=com.mysql.jdbc.Driver
jdbc.url=jdbc:mysql://localhost:3306/mybatis
jdbc.username=root
jdbc.password=root

2.在配置文件中引入db.properties

<properties resource="db.properties"></properties>
<environments default="mysql">
  <environment id="mysql">
    <transactionManager type="JDBC"></transactionManager>
    <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>

当然我们也可以将数据源数据通过配置到MyBatis配置文件内,但这样做没什么意义。

<properties>
  <property name="jdbc.driver" value="com.mysql.jdbc.Driver"></property>
  <property name="jdbc.url" value="jdbc:mysql://localhost:3306/mybatis"></property>
  <property name="jdbc.username" value="root"></property>
  <property name="jdbc.password" value="root"></property>
</properties>

<environments default="mysql">
  <environment id="mysql">
    <transactionManager type="JDBC"></transactionManager>
    <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>

typeAliases

在MyBatis配置文件中,通过typeAliases可以为sql映射文件中的输入/输出参数设置类型别名,然后在sql映射配置文件中指定输入输出参数类型时使用别名,这样可以简化代码,降低复杂度。
1.配置文件:

<typeAliases>
    <typeAlias type="com.zhangsan.pojo.User" alias="User">     </typeAlias>
</typeAliases>

2.映射文件:

<select id="findAll" resultType="User">
   select * from user
</select>

为一个所有包下的所有类配置别名

<typeAliases>
  <package name="包名"></package>
</typeAliases>

settings

在MyBatis配置文件中,settings标签可以配置一些运行时的行为,例如缓存、延迟加载、结果集控制、执行器、分页设置、命名规则等一系列控制性参数。下面是settings标签可以配置的参数列表:

  • cacheEnabled:设置是否启用缓存。
  • aggressiveLazyLoading:设置是否启用积极的延迟加载策略。
  • defaultStatementTimeout:设置默认的语句超时时间。
  • maxRows:设置允许返回的最大行数。
  • logPrefix:设置日志的前缀。
  • nestedTransactionCheck:设置是否检查嵌套事务。
  • optimizationEnabled:设置是否启用优化。
  • poolingEnabled:设置是否启用连接池。
  • preferredTestQuery:设置首选的测试查询语句。
  • resultSetType:设置结果集类型。
  • statementTimeoutPrefix:设置语句超时前缀。
  • transactionManager:设置事务管理器的实现类。
  • autoMappingUnknownColumns:设置是否自动映射未知的列。
  • mapUnderscoreToCamelCase:设置是否将下划线转换为驼峰命名。
  • lazyLoadTriggerMethods:设置延迟加载触发方法的列表。

以下是一个在 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>
    <settings>
        <!-- 启用缓存 -->
        <cacheEnabled>true</cacheEnabled>
    </settings>

    <mappers>
        <!-- 映射文件位置 -->
        <mapper resource="com/example/mapper/YourMapper.xml"/>
    </mappers>
</configuration>

请注意,启用缓存可能会对数据的一致性和实时性产生影响,因此在实际应用中需要根据具体情况进行权衡和配置。你可以根据需要进一步配置缓存的细节,如缓存类型、过期时间等。

plugins

在Mybatis配置文件中,plugins标签可以用来配置插件,通过插件可以修改MyBatis的核心行为。在Mybatis配置文件中配置插件的方法如下:

<plugins>
    <plugin interceptor="mybatis.plugin.TrimInterceptor" />
</plugins>

其中,interceptor属性用于指定插件的类名,该类需要实现Interceptor接口。这样,插件就会在Mybatis的执行过程中起拦截作用。

environments

在Mybatis中,environments标签是用来放置数据库连接相关配置信息的,其中可以配置多个数据库的连接环境,方便sql语句可以适用于多个数据库环境。在environments中可以配置一个个单独的environment,它们代表多个数据库环境的配置信息。每一个environment都包含了事务管理器(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="run" >
    <transactionManager type="" />
    <dataSource type="" />
</environment>
</environments>

在上述示例中,我们配置了两个环境:development和run。你可以根据实际需求添加或修改环境配置。其中,id代表当前环境的唯一标识,transactionManager和DataSource标签分别配置了事务管理器和数据源的信息。

mappers

mappers标签是用来配置需要加载的Mapper映射文件路径的。在mappers标签下可以有多个mapper标签,每个mapper标签中配置的都是一个独立的映射配置文件的路径,配置方式有以下几种:

  • 使用相对路径进行配置,示例代码如下:
<mappers>
    <mapper resource="org/mybatis/mappers/UserMapper.xml"/>
    <mapper resource="org/mybatis/mappers/ProductMapper.xml"/>
    <mapper resource="org/mybatis/mappers/ManagerMapper.xml"/>
</mappers>
  • 使用绝对路径进行配置,示例代码如下:
<mappers>
    <mapper url="file:///var/mappers/UserMapper.xml"/>
    <mapper url="file:///var/mappers/ProductMapper.xml"/>
    <mapper url="file:///var/mappers/ManagerMapper.xml"/>
</mappers>
  • 使用接口信息进行配置,示例代码如下:
<mappers>
    <mapper class="org.mybatis.mappers.UserMapper"/>
    <mapper class="org.mybatis.mappers.ProductMapper"/>
    <mapper class="org.mybatis.mappers.ManagerMapper"/>
</mappers>
  • 使用接口所在包进行配置,示例如下:
<mappers>
    <package name="org.mybatis.mappers"/>
</mappers>

只有配置了mappers信息后,MyBatis才知道去哪里加载Mapper映射文件。在日常开发中,可以根据项目中Mapper的配置偏好,选择整合配置文件的配置方式。

二、映射文件

resultMap

resultMap标签的作用的自定义映射关系。
1.自定义映射关系

<!-- id:自定义映射名 type:自定义映射的对象类型  -->
<resultMap id="teacherMapper" type="com.itbaizhan.pojo.Teacher">
  <!-- id定义主键列  property:POJO属性名 column:数据库列名  -->
  <id property="id" column="tid"></id>
  <!-- result定义普通列  property:POJO属性名 column:数据库列名  -->
  <result property="teacherName" column="tname"></result>
</resultMap>

2.在标签中,使用resultMap属性代替resultType属性,使用自定义映射关系。

<select id="findAll" resultMap="teacherMapper">
   select * from teacher
</select>

sql&include

sql标签用于定义一个包含多个SQL语句片段的区域,可以在多个查询中重用。include标签则用于在映射文件的任意位置引用sql标签中的内容,这样可以避免在多个查询中重复编写相同的SQL语句。

<sql id="selectAllField">
   select tid as id,tname as teacherName
</sql>


<select id="findAll" resultType="com.itbaizhan.pojo.Teacher">
  <include refid="selectAllField"></include>
   from teacher;
</select>


<select id="findById" resultType="com.itbaizhan.pojo.Teacher">
  <include refid="selectAllField"></include>
   from teacher where tid = #{id}
</select>


总结

提示:这里对文章进行总结:

通过生成MyBatis的配置文件和映射文件,可以方便地使用MyBatis进行数据库操作。在实际开发中,可以根据具体需求来生成相应的文件,并根据项目结构合理地组织和管理这些文件。

文章来源:https://blog.csdn.net/liubopro666/article/details/135268640
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。