美文网首页
Mybatis使用mysql函数if出现错误

Mybatis使用mysql函数if出现错误

作者: 明月几何8 | 来源:发表于2020-07-14 13:51 被阅读0次

在mybatis的mapper文件中使用IF函数的时候,莫名其妙的报错,但是在sql语句是正确的,可以在navcat中运行,但是在mapper文件中使用就是报错,查阅资料发现说什么情况的都有,有说缺少依赖,需要添加下面的依赖:

<!--必须使用0.9以上的版本-->
<dependency>
    <groupId>com.github.jsqlparser</groupId>
    <artifactId>jsqlparser</artifactId>
    <version>1.4</version>
</dependency>

也有说可以在mapper接口中添加@SqlParser(filter = true)注解,然后在配置文件中添加如下配置:

# 开启 SQL 解析缓存注解生效
mybatis-plus:
  global-config:
    sql-parser-cache: true

以前两种情况对于现在我处在的项目中不太适应,所以我使用的下面的方法,使用case when作为if的替换。
修改前的sql:

SELECT
IF( CAST( SFCZ AS SIGNED ) = 0, '已处置', '未处置' ) AS name,
    COUNT( ID ) AS value
FROM
    l_yjzh_yyzxjj 
WHERE
    is_deleted = 0 
GROUP BY
    SFCZ

修改后的sql:

        SELECT
            CASE SFCZ WHEN 0 THEN  '已处置' ELSE '未处置' END AS name,
            COUNT( ID ) AS value
        FROM
            l_yjzh_yyzxjj
        WHERE
            is_deleted = 0
        GROUP BY
            SFCZ

相关文章

网友评论

      本文标题:Mybatis使用mysql函数if出现错误

      本文链接:https://www.haomeiwen.com/subject/bobdhktx.html