mybatis第三天知识(动态sql)
语法格式
<trim prefix="" suffix="" suffixOverrides="" prefixOverrides="">
语法说明:
prefix:在trim标签内sql语句加上前缀
suffix:在trim标签内sql语句加上后缀
suffixOverrides:指定去除多余的后缀内容
比如:suffixOverrides=”,”,去除trim标签内sql语句多余的后缀”,”
prefixOverrides:指定去除多余的前缀内容
示例代码:
<select id="search" resultType="cn.kgc.mybatis.entity.Student">
select * from student
<trim prefix="where" prefixOverrides="and" >
<if test="stuNo!=null">
stu_no = #{stuNo}
</if>
<if test="stuName!=null">
and stu_name = #{stuName}
</if>
<if test="stuSex!=null">
and stu_sex = #{stuSex}
</if>
</trim>
</select>
用于动态更新语句的类似解决方案叫做set。set元素可以用于动态包含需要更新的列,忽略其它不更新的列。比如:
<update id="updateAuthorIfNecessary">
update Author
<set>
<if test="username != null">username=#{username},</if>
<if test="password != null">password=#{password},</if>
<if test="email != null">email=#{email},</if>
<if test="bio != null">bio=#{bio},</if>
</set>
where id=#{id}
</update>
这个例子中,set 元素会动态地在行首插入 SET 关键字,并会删掉额外的逗号(这些逗号是在使用条件语句给列赋值时引入的)。