1.select标签:映射sql查询语句。
<select id="findUserById" parameterType="int" resultType="User">
select * from user where id = #{id}
</select>
2.insert标签:映射sql新增语句。
<insert id="insertUser" parameterType="User">
insert into user (name, age) values (#{name}, #{age})
</insert>
3.update标签:映射sql修改语句。
<update id="updateUser" parameterType="User">
update user set name = #{name}, age = #{age} where id = #{id}
</update>
4.delete标签:映射sql删除语句。
<delete id="deleteUserById" parameterType="int">
delete from user where id = #{id}
</delete>
5.if标签:对其中sql语句进行判断,为真标签内的sql语句才会添加到最终的sql语句中。
<select id="findUsersByCondition" resultType="User">
select * from user
<where>
<if test="name!= null">
name = #{name}
</if>
<if test="age!= null">
and age = #{age}
</if>
</where>
</select>
6.foreach标签:用于循环遍历集合参数,并根据集合中的元素动态地生成 sql片段。
<select id="findUsersByIds" resultType="User">
select * from user where id in
<foreach collection="ids" item="id" open="(" separator="," close=")">
#{id}
</foreach>
</select>
7.where标签:在sql 语句中动态地添加 where 条件。如果传入的参数满足一定条件,才会生成 where 关键字和相应的条件语句。
<select id="findUsersByCondition" resultType="User">
select * from user
<where>
<if test="name!= null">
name = #{name}
</if>
<if test="age!= null">
and age = #{age}
</if>
</where>
</select>
8.sql标签:定义可复用的 sql片段。
<sql id="userColumns">
id, name, age
</sql>
<select id="findAllUsers" resultType="User">
select <include refid="userColumns"/> from user
</select>
9.resultMap标签:定义数据库表字段和 Java 对象属性之间的映射关系。
<resultMap id="userResultMap" type="User">
<id property="id" column="user_id"/>
<result property="name" column="user_name"/>
<result property="age" column="user_age"/>
</resultMap>
10.trim标签:灵活地在 sql片段的前后添加、删除或替换特定的字符串。
<select id="findUsersWithTrim" resultType="User">
select * from user
<trim prefix="WHERE" prefixOverrides="AND |OR ">
<if test="name!= null">
name = #{name}
</if>
<if test="age!= null">
and age = #{age}
</if>
</trim>
</select>
11.set标签:在更新语句中动态地生成 set子句。只有当传入的参数对应的字段值不为 null 时,才会在 set子句中包含该字段的更新语句。
<update id="updateUserSelectively" parameterType="User">
update user
<set>
<if test="name!= null">
name = #{name},
</if>
<if test="age!= null">
age = #{age},
</if>
</set>
where id = #{id}
</update>
12.choose,when,otherwise标签:类似于 Java 中的 switch-case-default 语句,用于根据不同的条件选择不同的 sql片段执行。
<select id="findUsersByCondition2" resultType="User">
select * from user
<where>
<choose>
<when test="name!= null">
name = #{name}
</when>
<when test="age!= null">
age = #{age}
</when>
<otherwise>
1 = 1
</otherwise>
</choose>
</where>
</select>
13.include标签:用于引用其他已定义的 sql片段,可以提高代码的可维护性和复用性。
<sql id="commonColumns">
id, name
</sql>
<select id="findUsersWithInclude" resultType="User">
select <include refid="commonColumns"/> from user
</select>
14.association标签:处理一对一的关联关系,将关联表的字段映射到 Java 对象的属性上。
<resultMap id="userWithDetailResultMap" type="User">
<id property="userId" column="user_id"/>
<result property="username" column="user_name"/>
<association property="userDetail" javaType="UserDetail">
<id property="detailId" column="detail_id"/>
<result property="detailInfo" column="detail_info"/>
</association>
</resultMap>