巧妙mybatis避免Where 空条件的尴尬


我就废话不多说了,大家还是直接看代码吧~

1
2
3
4
5
6
7
< select id = "findActiveBlogLike" resultType = "Blog" >
  SELECT * FROM BLOG
  WHERE
  < if test = "state != null" >
  state = #{state}
  </ if >
</ select >

如果state参数为空时,最终生成SQL语句为

SELECT * FROM BLOG

WHERE

执行会出错,当然,你可以在where 后加一个1=1,改成

1
2
3
4
5
6
7
< select id = "findActiveBlogLike" resultType = "Blog" >
  SELECT * FROM BLOG
  WHERE 1=1
  < if test = "state != null" >
  and state = #{state}
  </ if >
</ select >

但是这个做法不太“环保”(毕竟引入了一个垃圾条件),其实只要改成<where>...</where>即可

1
2
3
4
5
6
7
8
< select id = "findActiveBlogLike" resultType = "Blog" >
  SELECT * FROM BLOG
  < where >
   < if test = "state != null" >
    and state = #{state}
   </ if >
  </ where >
</ select >


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM