Mybatis Plus Xml 查询中使用枚举类
首先继承 IEnum
枚举类需要继承 IEnum<T>
并重写 getValue()
方法
/**
* 学生统计入参类,包含离校进校和体温异常类别
*
* @author hycao
*/
public enum StudentTypeEnum implements IEnum<String> {
/**
* 进校: ACCESS_IN
* 离校: ACCESS_OUT
*/
ACCESS_IN, ACCESS_OUT
@Override
public String getValue() {
return name();
}
}
使用 SQL 进行查询
两种情况,如果仅仅是作为查询条件,而不判断它的值,则无需额外考虑,代码如下
// Mapper
Page<User> listUserByType(Page<User> page, @Param("type") StudentTypeEnum type);
<select id="listUserByType">
select * from user
<where>
<if test="type != null">and user.type = #{type}</if>
</where>
</select>
如果需要判断枚举类的值,则需要进行额外处理
<select id="listUserByType">
select * from user
<where>
# 方法一
<if test="type.name() == 'ACCESS_IN'">and user.in = true</if>
# 方法二, 使用 equal 判断,注意字符串需要使用 "" 而不是 ''
<if test='type.name().equal("ACCESS_IN")'>and user.in = true</if>
# 方法三:通过 mybatis 的 OGNL 表达式 调用静态方法
<if test="type == @com.hycao.enums.StudentTypeEnum@ACCESS_IN>and user.in = true</if>
</where>
</select>
动态sql 部分,Mybatis 处理枚举类也可以同样处理