IF:其实在上一篇文章中已经有IF了这里把它拿过来是为了更好的衔接
<select id="addBlog2" parameterType="map" resultType="Blog">
select * from mybatis.blog where 1=1
<if test="title != null">
and title=#{title}
</if>
<if test="author !=null" >
and author =#{author}
</if>
</select>
choose(When,otherwise)
select * from mybatis.blog
<where>
<choose>
<when test="title !=null">
title=#{title}
</when>
<when test="author !=null">
and author=#{author}
</when>
<otherwise>
and views=#{views}
</otherwise>
</choose>
</where>
这个语句呢只要成立一个呢就会执行当前那个然后就不去走下面的了然后就结束了,这和java中的switch循环相同
trim(where,set)
select * from mybatis.blog
<where>
<if test="title != null">
title=#{title}
</if>
<if test="author !=null" >
and author =#{author}
</if>
</where>
- 这里给大家说明一下标签的作用这个标签的作用呢就是让你的SQL呢变得更加的安全会自动给你判断一些语句。
- 给大家把官方的话拿过来帮助大家更好的理解:where元素只会在至少有一个子元素的条件返回SQL子句的情况下才去插入“WHERE”子句。而且,若语句的开头为“AND”或者“OR”,where元素也会将它们去除。
<update id="updateBlog" parameterType="map">
update mybatis.blog
<set>
<if test="title!=null">
title=#{title},
</if>
<if test="author!=author">
and author=#{author}
</if>
</set>
where id=#{id}
</update>
- set元素会动态前置SET关键字,同时也会删掉无关的逗号。
- 动态SQL,本质还是SQL语句,只是我们可以在SQL层面,去执行一个逻辑代码
- 一些逻辑语句: if ,choose ,when
- 安全语句:where,set保证你SQL安全运行