【手把手带你玩转MyBatis】基础篇:一文读懂XML映射文件

本文详细介绍了MyBatis中XML映射文件的作用,包括其结构、基本SQL映射元素(如查询、插入、更新和删除)、动态SQL的使用以及结果集映射的配置。这些是开发者进行数据库操作的关键技术点。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

内容:

在MyBatis框架中,SQL映射文件扮演着至关重要的角色,它是Java接口方法与数据库操作之间的重要纽带。通过XML映射文件,我们可以清晰地定义SQL查询、插入、更新和删除等操作,并指定结果集如何映射到Java实体类。

目录

1. XML映射文件结构

2. 基本SQL映射元素

3. 动态SQL 

4. 结果集映射

 

1. XML映射文件结构

  • 每个映射器(Mapper)都对应一个XML映射文件,通常命名规则为“Mapper接口名+ .xml”。
  • 文件头部声明了映射器命名空间,它应与对应的Mapper接口全限定名一致。
<?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">
    <!-- SQL映射语句在此定义 -->
</mapper>

2. 基本SQL映射元素

  • <select>:用于定义查询操作,id属性作为该查询方法在Mapper接口中的唯一标识符,resultTyperesultMap指定了查询结果映射到的Java类型。
<select id="selectUserById" resultType="com.example.model.User">
    SELECT * FROM users WHERE id = #{id}
</select>
  • <insert>:定义插入操作,parameterType指定传入参数的Java类型,使用useGeneratedKeyskeyProperty可以获取自增主键值并将其赋给实体类相应属性。
<insert id="insertUser" parameterType="com.example.model.User" useGeneratedKeys="true" keyProperty="id">
    INSERT INTO users(name, email) VALUES(#{name}, #{email})
</insert>
  • <update><delete>:分别定义更新和删除操作,用法类似。

3. 动态SQL 

MyBatis提供了丰富的动态SQL标签,如<if><choose><when><otherwise><foreach>等,以应对复杂的条件查询需求。

<select id="selectUsersByCondition" resultType="com.example.model.User">
    SELECT * FROM users
    <where>
        <if test="name != null">
            AND name = #{name}
        </if>
        <if test="email != null">
            AND email = #{email}
        </if>
        <!-- 使用foreach遍历集合参数 -->
        <foreach item="item" index="index" collection="ids" open="OR id IN (" separator="," close=")">
            #{item}
        </foreach>
    </where>
</select>

4. 结果集映射

  • resultType:直接指定返回结果类型的全限定类名,适用于表结构与实体类完全匹配的情况。

  • resultMap:当表结构与实体类不完全匹配或者存在复杂关联关系时,需要定义更详细的结果映射。可以通过<result><association><collection>等标签实现。

通过深入理解并熟练掌握MyBatis的XML映射文件编写技巧,开发者能够更加灵活高效地进行数据库操作,同时保持代码的清晰度和可维护性。

 

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

陈大狗Ayer

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值