1.动态Sql: 根据对象中不为null的属性当作where条件
语法
-
1.如果判断成立,则动态拼接条件
条件 -
2.where标签 去除where后边多余的一个and/or
<select id="findUserList" resultType="User">
select * from demo_user
<where>
<if test="id !=null ">id = #{id}</if>
<if test="name !=null">and name = #{name}</if>
<if test="age !=null ">and age = #{age}</if>
<if test="sex !=null ">and sex = #{sex}</if>
</where>
</select>
2.动态Sql-set条件
<update id="updateUser">
update demo_user
set
<!-- <if test="name !=null">name = #{name},</if>-->
<!-- <if test="age !=null">age = #{age},</if>-->
<!-- <if test="sex !=null">sex = #{sex}</if>-->
name = #{name},
age = #{age},
sex = #{sex}
where id = #{id}
</update>
3.动态Sql-choose、when、otherwise
说明: 如果不想使用所有的条件可以使用choose 类似于java中的switch 语法:
如果name有值,则按照name查询,否则按照sex查询数据.
<select id="findUserByNS" resultType="User">
select * from demo_user
<where>
<choose>
<when test="name !=null">name = #{name}</when>
<when test="age !=null">age = #{age}</when>
<otherwise>
sex = #{sex}
</otherwise>
</choose>
</where>
</select>
4.resultMap
需求说明
当表中的字段与POJO中的属性名称不一致时,需要使用resultMap的方式进行映射.