服务器之家

服务器之家 > 正文

解决mybatis where-if中if不能识别大写AND,OR的问题

时间:2021-08-03 10:05     来源/作者:↘"LYong

mybatis报错:

?
1
caused by: org.apache.ibatis.ognl.parseexception: encountered " "and “” at line 1

错误代码:

?
1
2
3
4
5
6
7
8
9
10
11
12
<select id="selectaccountlist" resultmap="baseresultmap">
  select ct.customer_name customername,sam.city_code,sam.user_name,sam.account_name
 from sys_account_manager sam left join sys_customer ct on ct.id = sam.customer_id
  where sam.deleted = 0
  <if test="customername != null and customername != '' ">
  and ct.customer_name like concat('%',#{customername},'%')
  </if>
  <if test="citycode != null and citycode != '' ">
  and locate(#{citycode},sam.city_code)
  </if>
  order by status,account_validity_time desc
 </select>

正确代码:

原因是:

if条件中and为大写,大写不能识别,应改为小写。

?
1
2
3
4
5
6
7
8
9
10
11
12
<select id="selectaccountlist" resultmap="baseresultmap">
  select ct.customer_name customername,sam.city_code,sam.user_name,sam.account_name
 from sys_account_manager sam left join sys_customer ct on ct.id = sam.customer_id
  where sam.deleted = 0
  <if test="customername != null and customername != '' ">
  and ct.customer_name like concat('%',#{customername},'%')
  </if>
  <if test="citycode != null and citycode != '' ">
  and locate(#{citycode},sam.city_code)
  </if>
  order by status,account_validity_time desc
 </select>

补充:mybatis中if判断遇到的坑

最近在项目开发的过程中,遇到了mybatis的一个坑(也许是mybatis有意这样设计的),对于integer或者long这种引用数据类型,在做if判断的时候,如果引用数据类型为0,则mybatis将会视为”“空字符串,所以走不进判断逻辑里。

以下余额字段为long类型,availableamount值为0时,将走不进判断方法内的示例截图:

解决mybatis where-if中if不能识别大写AND,OR的问题

解决方法:

在test判断条件中添加”or availableamount==0“即可,以下是示例截图:

解决mybatis where-if中if不能识别大写AND,OR的问题

或者在业务场景允许的情况下,只判断availableamount!=null

?
1
2
3
<if test="availableamount!=null">
  ...
</if>

以上为个人经验,希望能给大家一个参考,也希望大家多多支持服务器之家。如有错误或未考虑完全的地方,望不吝赐教。

原文链接:https://blog.csdn.net/weixin_39093006/article/details/91041819

标签:

相关文章

热门资讯

2022年最旺的微信头像大全 微信头像2022年最新版图片
2022年最旺的微信头像大全 微信头像2022年最新版图片 2022-01-10
蜘蛛侠3英雄无归3正片免费播放 蜘蛛侠3在线观看免费高清完整
蜘蛛侠3英雄无归3正片免费播放 蜘蛛侠3在线观看免费高清完整 2021-08-24
背刺什么意思 网络词语背刺是什么梗
背刺什么意思 网络词语背刺是什么梗 2020-05-22
yue是什么意思 网络流行语yue了是什么梗
yue是什么意思 网络流行语yue了是什么梗 2020-10-11
暖暖日本高清免费中文 暖暖在线观看免费完整版韩国
暖暖日本高清免费中文 暖暖在线观看免费完整版韩国 2021-05-08
返回顶部