Mybatis条件iftest如何使用枚举值

Faye ·
更新时间:2024-09-20
· 484 次阅读

目录

Mybatis条件if test使用枚举值

1.正确

2.错误

Mybatis里使用枚举Enum判断

TestTypeEnum定义如下

Mybatis条件if test使用枚举值 1.正确 package com.weather.weatherexpert.common.utils; /** * <p>Title: </p> * <p>Description: </p> * * @Author * @CreateTime */ public enum City { XINZHOU(100002,"忻州"), DATONG(100003,"大同"), TAIYUAN(100001,"太原"); private final Integer code; private final String name; City(Integer value, String desc) { this.code = value; this.name = desc; } public Integer getCode() { return code; } public String getName() { return name; } }

xml:

<!--<if test="cityName == @com.weather.weatherexpert.common.utils.City.XINZHOU@getName">&lt;!&ndash;wrong,java.lang.ClassNotFoundException: Unable to resolve class: com.weather.weatherexpert.common.utils.City.XINZHOU&ndash;&gt;--> <!--<if test="cityName == @com.weather.weatherexpert.common.utils.City@XINZHOU@getName">&lt;!&ndash;wrong,[org.apache.ibatis.ognl.ParseException: Encountered " "@" "@ "" at line 1, column 65.&ndash;&gt;--> <if test="cityName == @com.weather.weatherexpert.common.utils.City@XINZHOU.getName"><!--right--> area_table </if> where 1=1 <if test="cityName == @com.weather.weatherexpert.common.utils.City@XINZHOU.getName"><!--right--> and city_name=#{cityName} </if>

2.错误 package com.weather.weatherexpert.common.utils; /** * <p>Title: </p> * <p>Description: </p> * * @Author * @CreateTime */ public class CityClass { public static enum CityEnum { XINZHOU(100002, "忻州"), DATONG(100003, "大同"), TAIYUAN(100001, "太原"); private final Integer code; private final String name; CityEnum(Integer value, String desc) { this.code = value; this.name = desc; } public Integer getCode() { return code; } public String getName() { return name; } } }

xml:

/* Caused by: org.apache.ibatis.builder.BuilderException: Error evaluating expression 'cityName == @com.weather.weatherexpert.common.utils.CityClass@CityEnum.XINZHOU.getName'. Cause: org.apache.ibatis.ognl.OgnlException: Could not get static field CityEnum from class com.weather.weatherexpert.common.utils.CityClass [java.lang.NoSuchFieldException: CityEnum]*/ <if test="cityName == @com.weather.weatherexpert.common.utils.CityClass@CityEnum.XINZHOU.getName"><!--wrong--> area_table </if>

可见,直接定义的枚举类可以正常使用,在类中定义的枚举类这样使用会报错,可能方法还没有找到。

如下正确:

<if test="cityName == @com.a.b.c.CityClass$CityEnum@XINZHOU.getName"><!--right--> name = #{username} </if> Mybatis里使用枚举Enum判断 <if test="dtEnum == @com.xxx.xxx.TestTypeEnum@HOUR">   DATE_FORMAT(TM,'%Y-%m-%d %H') as keyStr, </if> TestTypeEnum定义如下

HOUR("hour"),

DAY("day"),

MONTH("month"),

YEAR("year");

以上为个人经验,希望能给大家一个参考,也希望大家多多支持软件开发网。



枚举 mybatis

需要 登录 后方可回复, 如果你还没有账号请 注册新账号