问题描述
枚举类StatusEnum 的定义
package com.constant;
import java.io.Serializable;
/**
 * 状态枚举
 */
public enum StatusEnum {
    // 未完成
    INCOMPLETE,
    // 已完成
    COMPLETED,
}
原来的写法
<if test="status == @com.constant.StatusEnum@COMPLETED"></if>
可能是版本的问题,总是报错
### Error querying database.  
Cause: java.lang.IllegalArgumentException: 
invalid comparison: com.constant.StatusEnum and com.constant.StatusEnum
问题解决
变通的解决办法:将枚举类转为字符串判断
<if test="status.toString() == 'INCOMPLETE'"></if>
或者
<if test="status.toString() == @com.constant.StatusEnum@COMPLETED.toString()"></if>
Mapper.xml 中并没有语法提示,所以字符串判断也是可以的
参考
- MyBatis Mapper Xml中使用枚举进行比较导致的异常:invalid comparison










