加载中...
PAGE

mybatis case when 报错

Post on 2021-10-26 13 0

在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''
mysql主从同步配置

mysql主从同步配置

阅读更多
js 常用属性和方法等知识汇总

js 常用属性和方法等知识汇总

阅读更多
docker 学习笔记记录

docker 学习笔记记录

阅读更多

暂无评论

    发表评论
    返回顶部
    X