mybatis case when 报错

在mybatis中使用case when进行条件筛选判断时遇到

Failed to process, please exclude the tableName or statementId.

这样的报错信息,报错的信息是语法错误
但是我在mysql的命令行中运行sql语句是没问题的

//我的case when语句
WHERE dept.type = 1
AND 
(
CASE agent.dept_type
WHEN "agent" THEN dept.id=30
END
)
//当agent的dept_type为"agent"时,将添加dept.id = 30的判断

这段sql语句在命令行内运行没问题但是放到mybatis上执行就会报错

//修改后
WHERE dept.type = 1
AND dept.id=
(
CASE agent.dept_type
WHEN "agent" THEN 30
END
)

后来将dept.id放到外面就解决了这个问题

20190718-补充记录 :遇到另一个问题,如果dept这个表是联查来的有可能会没有数据,在dept无数据的时候我们就无法给dept.id赋上啥参数了,并且不可以影响原表数据的查询,我改成了下面这样:

//修改后
WHERE dept.type = 1
AND (dept.id=
(
CASE agent.dept_type
WHEN "agent" THEN 30
ELSE 0
END
) or dept.id is null)

添加dept.id为空的判断即可
(在mysql语句里可以有很多方法解决,但是在mybatis上就会报错 -_-||)

2019-7-30-补充说明:
如果是空字符串不可以使用""要改成单引号''

CASE WHEN *** THEN ***
ELSE ""  =>这样也会报错,需要改成=> ELSE''
  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Mybatis中,可以使用case语句来进行条件判断和返回结果。Mybatis支持两种格式的case语句:简单case函数和case搜索函数。 简单case函数的语法如下: ``` case sex when '1' then '男' when '2' then '女' else '未知' end ``` 这种格式适用于在case后面直接跟随一个字段或表达式,然后根据不同的取值返回不同的结果。 case搜索函数的语法如下: ``` case when sex = '1' then '男' when sex = '2' then '女' else '未知' end ``` 这种格式适用于在case后面跟随多个条件表达式,然后根据条件的结果返回不同的结果。 在Mybatis中使用case语句时,需要注意语法的正确性。如果在命令行内运行没有问题,但在Mybatis中执行时报错,可能是因为语法错误或者参数传递的问题。请检查SQL语句的正确性,并确保参数的传递方式正确。 另外,Mybatis中还有其他常用的标签和语法,比如foreach标签的使用。如果你有关于Mybatis的其他问题,可以提供更多的信息,我会尽力帮助你解答。 #### 引用[.reference_title] - *1* *3* [11.20工作总结(mybatis中SQL语法汇总)](https://blog.csdn.net/mjx715813/article/details/103161599)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insert_down1,239^v3^insert_chatgpt"}} ] [.reference_item] - *2* [mybatis case when 报错](https://blog.csdn.net/bsegebr/article/details/123659718)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insert_down1,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值