mybatis 根据id查询时非空判断

如下面这种写法:

select * from t_user t
where 1 = 1 
<if test="id != null and id != ''">
    and t.id = #{id}
</if>

若id为空,则查到的是所有用户,该如何解决?
若在调用前进行id非空判断,那mapper文件中的判断并没有意义,是否可以去掉?

真心求教,感谢~

阅读 4.8k
3 个回答

可以加个 else 呀:

select * from t_user t
where 1 = 1 
<choose>
    <when test="id != null and id != ''">
        and t.id = #{id}
    </when>
    <otherwise>
        and t.id = 0
    </otherwise>
</choose>

一般设置 id 自增的话,都是从某个正整数开始的。

你的业务要求既然就是不允许查询全部,那自然就是在查询前校验,查询语句中删掉非空判断

新手上路,请多包涵

这种非空校验加在controller吧

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题