MyBatis之配置文件和映射文件
系列文章目录
提示:这里可以添加系列文章的所有文章的目录,目录需要自己手动添加
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进行数据库操作。在实际开发中,可以根据具体需求来生成相应的文件,并根据项目结构合理地组织和管理这些文件。
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。 如若内容造成侵权/违法违规/事实不符,请联系我的编程经验分享网邮箱:veading@qq.com进行投诉反馈,一经查实,立即删除!