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

巧妙mybatis避免Where 空条件的尴尬| Id | Title | DateAdded | SourceUrl | PostType | Body | BlogId | Description | DateUpdated | IsMarkdown | EntryName | CreatedTime | IsActive | AutoDesc | AccessPermission |

| -------------| -------------| -------------| -------------| -------------| -------------| -------------| -------------| -------------| -------------| -------------| -------------| -------------| -------------| -------------|
| 14892378| 巧妙mybatis避免Where 空条件的尴尬| 2021-06-17T10:26:00| | BlogPost|

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

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>
| 648658| | 2024-04-29T21:17:00| false| | 2021-06-17T10:26:24.403| true| 我就废话不多说了,大家还是直接看代码吧~ 1 2 3 4 5 6 7 <select id="findActiveBlogLike" resultType="Blog"> SELECT * FROM BLOG WHERE <if test="state != null"> state = #{sta| Anonymous|
posted @   RalphLauren  阅读(24)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· ollama系列01:轻松3步本地部署deepseek,普通电脑可用
· 25岁的心里话
· 按钮权限的设计及实现
点击右上角即可分享
微信分享提示