1. <select>
-
作用:定义查询操作,执行
SELECT语句。 -
示例:
<select id="findUserById" parameterType="int" resultType="User"> SELECT * FROM users WHERE id = #{id} </select> -
属性:
id:定义方法的唯一标识符,用于接口中调用。parameterType:指定传入参数的类型。resultType:指定返回结果的 Java 类型。
2. <insert>
-
作用:定义插入操作,执行
INSERT语句。 -
示例:
<insert id="insertUser" parameterType="User"> INSERT INTO users (name, age) VALUES (#{name}, #{age}) </insert> -
属性:
id:定义方法的唯一标识符。parameterType:传入参数的类型。
3. <update>
-
作用:定义更新操作,执行
UPDATE语句。 -
示例:
<update id="updateUser" parameterType="User"> UPDATE users SET name = #{name}, age = #{age} WHERE id = #{id} </update> -
属性:
id:定义方法的唯一标识符。parameterType:传入参数的类型。
4. <delete>
-
作用:定义删除操作,执行
DELETE语句。 -
示例:
<delete id="deleteUser" parameterType="int"> DELETE FROM users WHERE id = #{id} </delete> -
属性:
id:定义方法的唯一标识符。parameterType:传入参数的类型。
5. <resultMap>
-
作用:定义结果映射,将查询结果与 Java 对象进行映射,尤其是在复杂查询(多表联查)中使用。
-
示例:
<resultMap id="userResultMap" type="User"> <id property="id" column="id"/> <result property="name" column="name"/> <result property="age" column="age"/> </resultMap> -
属性:
id:定义映射的唯一标识符。type:指定映射到的 Java 对象类型。
6. <parameterMap> (已过时)
- 作用:用于传递复杂的输入参数。通常不再使用,推荐直接使用
parameterType。
7. <sql>
-
作用:用于定义可复用的 SQL 片段,避免重复编写 SQL。
-
示例:
<sql id="userColumns"> id, name, age </sql>
8. <include>
-
作用:引入
<sql>定义的片段。 -
示例:
<select id="findUserById" parameterType="int" resultType="User"> SELECT <include refid="userColumns"/> FROM users WHERE id = #{id} </select> -
属性:
refid:引用<sql>的id。
9. <if>
-
作用:用于动态生成 SQL,根据条件判断是否执行某一 SQL 片段。
-
示例:
<select id="findUserByCondition" parameterType="User" resultType="User"> SELECT * FROM users WHERE 1=1 <if test="name != null"> AND name = #{name} </if> <if test="age != null"> AND age = #{age} </if> </select> -
属性:
test:表达式条件。
10. <choose>, <when>, <otherwise>
-
作用:实现类似于
switch的功能,根据条件选择执行的 SQL 片段。 -
示例:
<select id="findUserByCondition" parameterType="User" resultType="User"> SELECT * FROM users <where> <choose> <when test="name != null"> name = #{name} </when> <when test="age != null"> age = #{age} </when> <otherwise> 1 = 1 </otherwise> </choose> </where> </select>
11. <trim>, <where>, <set>
-
<trim>:用于自定义 SQL 语句的前缀和后缀。-
示例:
<trim prefix="WHERE" suffixOverrides="AND"> <if test="name != null"> name = #{name} AND </if> <if test="age != null"> age = #{age} AND </if> </trim>
-
-
<where>:自动处理条件中的WHERE子句,避免拼接空条件时产生语法错误。- 示例:
<where> <if test="name != null"> name = #{name} </if> <if test="age != null"> AND age = #{age} </if> </where>
- 示例:
-
<set>:用于生成UPDATE语句中的SET子句,自动处理逗号问题。-
示例:
<set> <if test="name != null"> name = #{name}, </if> <if test="age != null"> age = #{age}, </if> </set>
-
12. <foreach>
-
作用:用于遍历集合类型参数(如
List、Array)并动态生成 SQL。 -
示例:
<select id="findUserByIds" parameterType="list" resultType="User"> SELECT * FROM users WHERE id IN <foreach item="id" collection="list" open="(" separator="," close=")"> #{id} </foreach> </select> -
属性:
item:每次遍历时的变量名。collection:需要遍历的集合。open、close、separator:用于控制生成的 SQL 语句的格式。
这些标签共同帮助 MyBatis 实现了灵活且动态的 SQL 映射,提高了开发效率。