mybatis choose when 和 if的区别

mybatis使用mapper配置条件语句sql时根据条件判断使用不同的参数和处理方式,常常用到 if 和 choose when,容易弄混淆,为什么有了if还要使用choose when呢,我觉得如果if还有else标签的话就不需要choose when了。if和choose when的用法如下:

一、if(通过“title”和“book”两个参数进行可选搜索):


 
 
  1. <select id="findBookLike"
  2. resultType= "Book">
  3. SELECT * FROM BOOK WHERE state = ‘ACTIVE’
  4. <if test="title != null">
  5. AND title like #{title}
  6. </if>
  7. <if test="book != null and book.name != null">
  8. AND book_name like #{book.name}
  9. </if>
  10. </select>

二、choose(我们不想应用到所有的条件语句,而只想从中择其一项):


 
 
  1. <select id="findActiveBookLike"
  2. resultType= "Book">
  3. SELECT * FROM BOOK WHERE state = ‘ACTIVE’
  4. <choose>
  5. <when test="title != null">
  6. AND title like #{title}
  7. </when>
  8. <when test="book != null and book.name != null">
  9. AND book_name like #{book.name}
  10. </when>
  11. <otherwise>
  12. AND type = 1
  13. </otherwise>
  14. </choose>
  15. </select>

 

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值