-
<mapper>标签- 作为映射文件的根元素,其他所有内容都包含在这个标签内。
namespace属性用于区分不同的 mapper,通常是接口的全限定名。
-
<select>标签- 用于定义查询语句。
- 可以设置参数类型(parameterType)和返回结果类型(resultType 或 resultMap)。
- 示例:
<select id="selectPerson" parameterType="int" resultType="com.example.Person"> SELECT * FROM person WHERE id = #{id} </select>
-
<insert>标签- 用于定义插入数据的语句。
- 可以通过
useGeneratedKeys和keyProperty来获取自增主键值。 - 示例:
<insert id="insertPerson" parameterType="com.example.Person"> INSERT INTO person(name, age) VALUES(#{name}, #{age}) </insert>
-
<update>标签- 用于定义更新数据的语句。
- 示例:
<update id="updatePerson" parameterType="com.example.Person"> UPDATE person SET name=#{name}, age=#{age} WHERE id=#{id} </update>
-
<delete>标签- 用于定义删除数据的语句。
- 示例:
<delete id="deletePerson" parameterType="int"> DELETE FROM person WHERE id=#{id} </delete>
-
<sql>标签- 用于定义可重用的 SQL 代码段。
- 可以使用
<include>标签引用这些片段。 - 示例:`
<sql id="userColumns"> ${alias}.id,${alias}.username,${alias}.email </sql>
`
<select id="selectUsers" resultType="User">
SELECT
<include refid="userColumns"><property name="alias" value="u"/></include>
FROM some_table u
</select>
-
<resultMap>标签- 用于描述数据库结果集与对象之间的复杂映射关系。
- 包含
<id>(标识符) 和<result>(普通字段) 等子标签来映射列到 Java 对象属性。 - 示例:
<resultMap id="personResultMap" type="com.example.Person"> <id property="id" column="person_id"/> <result property="name" column="person_name"/> </resultMap>
-
<parameterMap>标签- 旧版 MyBatis 使用此标签来定义输入参数的映射关系,但新版推荐直接在 SQL 语句中使用 #{} 占位符。
- 在新版本中不常用。
-
<choose>,<when>,<otherwise>标签- choose里面包含when、otherwise两个标签,choose是父标签,when和otherwise必须都要写在它里面,当 when 中有条件满足的时候,就会跳出 choose,即所有的 when 和 otherwise 条件中,只有一个会输出,当所有的条件都不满足的时候就输出 otherwise 中的内容。第一个when不满足则继续往下判断,直到满足为止,如果全不满足,则执行otherwise(相当于else)
-
<if>标签- 用于条件判断。
- 示例:
<if test="name != null"> AND name = #{name} </if>
-
<foreach>标签- 用于遍历集合,常用于 in 语句或批量操作。
- 示例:
<foreach item="item" index="index" collection="list" open="(" separator="," close=")"> #{item} </foreach>