大家好,我是锋哥。

MyBatis 是一个流行的持久化框架,使用 XML 映射文件来配置 SQL 语句与 Java 对象之间的映射关系。在 MyBatis 中,XML 映射文件包含多个不同的标签,每个标签都有特定的功能。以下是 MyBatis XML 映射文件中常用的标签及其功能:
1. <mapper>
-
描述:这是 MyBatis XML 映射文件的根元素。它定义了一个映射器,并包含其他所有 SQL 语句和配置。
-
示例 :
xml<mapper namespace="com.example.mapper.UserMapper"> <!-- SQL 映射 --> </mapper>
2. <select>
-
描述:用于定义一个查询操作,返回结果集合。
-
属性 :
id:唯一标识符。resultType:指定返回结果的 Java 类型。parameterType:指定传入参数的类型。
-
示例 :
xml<select id="getUserById" resultType="User" parameterType="int"> SELECT * FROM users WHERE id = #{id} </select>
3. <insert>
-
描述:用于定义插入操作。
-
属性 :
id:唯一标识符。parameterType:指定传入参数的类型。
-
示例 :
xml<insert id="insertUser" parameterType="User"> INSERT INTO users (name, age) VALUES (#{name}, #{age}) </insert>
4. <update>
-
描述:用于定义更新操作。
-
属性 :
id:唯一标识符。parameterType:指定传入参数的类型。
-
示例 :
xml<update id="updateUser" parameterType="User"> UPDATE users SET name = #{name}, age = #{age} WHERE id = #{id} </update>
5. <delete>
-
描述:用于定义删除操作。
-
属性 :
id:唯一标识符。parameterType:指定传入参数的类型。
-
示例 :
xml<delete id="deleteUser" parameterType="int"> DELETE FROM users WHERE id = #{id} </delete>
6. <resultMap>
-
描述:用于定义复杂的结果映射,可以将结果集中的数据映射到 Java 对象的不同属性。
-
属性 :
id:唯一标识符。type:指定映射的 Java 类类型。
-
示例 :
xml<resultMap id="userResultMap" type="User"> <id property="id" column="id"/> <result property="name" column="name"/> <result property="age" column="age"/> </resultMap>
7. <sql>
-
描述:用于定义可重用的 SQL 片段。
-
属性 :
id:唯一标识符。
-
示例 :
xml<sql id="userColumns"> id, name, age </sql>
8. <include>
-
描述 :用于引入
<sql>标签定义的 SQL 片段。 -
属性 :
refid:引用的 SQL 片段的 ID。
-
示例 :
xml<select id="getAllUsers" resultType="User"> SELECT <include refid="userColumns"/> FROM users </select>
9. <parameterMap>(已被弃用)
- 描述:用于参数映射的定义,但在 MyBatis 3 中已被弃用,现在直接在 SQL 映射中定义参数即可。
10. <discriminator>(复杂映射时)
-
描述:用于在结果映射中进行类型区分,适用于多态情况。
-
示例 :
xml<discriminator property="type" javaType="String" column="typeColumn"> <case value="1" resultMap="resultMapForType1"/> <case value="2" resultMap="resultMapForType2"/> </discriminator>
11. <collection> 和 <association>
-
描述:用于处理一对多或一对一关系的映射。
-
示例 :
xml<association property="address" column="address_id" javaType="Address"/> <collection property="orders" column="user_id" javaType="List" ofType="Order"/>
通过合理应用这些标签,MyBatis 可以灵活地处理多种数据库操作,提供高效、可读性强的代码结构。