解决mybatis case when 报错的问题

网友投稿 2047 2023-02-14

解决mybatis case when 报错的问题

解决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这个表是联查来的http://有可能会没有数据,在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''

补充:Mybatis case when test 注意事项

p_id areaId,

c_id areaId,

r_id areaId,

test 中 用 == 不能用 = ,否则报错。

版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:小程序开发和vue关系(小程序开发用vue)
下一篇:app前端开发框架(前端app开发用什么框架合理)
相关文章

 发表评论

暂时没有评论,来抢沙发吧~