Mybatis动态sql的实现之常用标签:<if>、<foreach>、<where>、<choose><when><otherwise>

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/weixin_36146275/article/details/79762312
标签 解释以及应用场景
<if> 与java的条件判断f语句实现效果一样;
应用场景:常用于判断参数状态
<if test="params != null and params != ''">动态拼接的sql</if>
<where> 语意与mysql的where语句效果一样;
应用场景:开发中用得比较少,基本不用
使用例子:
<where>product_id < 100</where>
一般会使用以下sql代替<where>标签:
select * from product where 1 = 1 and product_id < 100
<foreach> 应用场景:前一个查询结果作为后一个查询的条件
使用例子:
前一个查询结果:SELECT film_id FROM film;保存到List filmList集合中
作为后一个查询的条件:SELECT * FROM film_actor WHERE film_id IN <foreach collection="filmList" item="item" index="index" open="(" separator="," close=")">#{item}</foreach>;
<foreach>标签参数说明:
collection:集合的名称;
item:遍历时使用的别名;
index:索引时使用的别名;
open:以什么符号开始包围参数
separator:分隔符
close:以什么符号结果包围
<choose><when><otherwise> 等同于java的if(exprt){}else if(exprt) {}else;
应用场景:需要递进式的判断,其实也可用<if>代替
使用例子:
SELECT * FROM BLOG WHERE state = 'ACTIVE' <choose><when test="title != null">AND title like #{title}</when><when test="author != null and author.name != null">AND author_name like #{author.name} </when><otherwise>AND featured = 1</otherwise></choose>

猜你喜欢

转载自blog.csdn.net/weixin_36146275/article/details/79762312
今日推荐