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

发布时间:2024年01月16日

内容:

在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映射文件编写技巧,开发者能够更加灵活高效地进行数据库操作,同时保持代码的清晰度和可维护性。

?

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