首页 > 解决方案 > 如何在带有mybatis注解的if中枚举

问题描述

我在MyBatis 注释中的 if 中使用枚举编写语法时遇到问题。

@Delete("<script>DELETE FROM tb_a WHERE "
        + "<if test='context.name().equals(ALBUM)'>"
        + " album_id = #{id}"
        + "</if>"
        + "<if test='context.name().equals(VIDEOLIBRARY)'>"
        + " videolibrary_id = #{id}"
        + "</if>"
      + "</script>")
 boolean delete(@Param("id") int id, @Param("context") EContext context);

枚举

public enum EContext {
    ALBUM,
    VIDEOLIBRARY,
    IMAGE,
    VIDEO,
}

我知道的正确语法是这样的,<if test="context.name().equals('ALBUM')"> 但我不知道如何用注释来编写它。我收到此错误消息 在此处输入图像描述

谢谢你的帮助

编辑以显示有关代码的更多信息

标签: mybatis

解决方案


name()方法返回一个java.lang.Stringand 在 OGNL 中,字符串文字应该用单引号或双引号括起来。

所以,if 元素应该写成..

+ "<if test=\"context.name().equals('ALBUM')\">"

或者

+ "<if test='context.name().equals(\"ALBUM\")'>"

推荐阅读