Mybatis条件if test使用枚举值
1.正确
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 |
package com.weather.weatherexpert测试数据mon.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:
1 2 3 4 5 6 7 8 9 10 |
<!--<if test="cityName == @com.weather.weatherexpert测试数据mon.utils.City.XINZHOU@getName"><!–wrong,java.lang.ClassNotFoundException: Unable to resolve class: com.weather.weatherexpert测试数据mon.utils.City.XINZHOU–>--> <!--<if test="cityName == @com.weather.weatherexpert测试数据mon.utils.City@XINZHOU@getName"><!–wrong,[org.apache.ibatis.ognl.ParseException: Encountered " "@" "@ "" at line 1, column 65.–>--> < if test = "cityName == @com.weather.weatherexpert测试数据mon.utils.City@XINZHOU.getName" > <!--right--> area_table </ if >
where 1=1 < if test = "cityName == @com.weather.weatherexpert测试数据mon.utils.City@XINZHOU.getName" > <!--right--> and city_name=#{cityName} </ if > |
2.错误
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 |
package com.weather.weatherexpert测试数据mon.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:
1 2 3 4 5 6 |
/* Caused by: org.apache.ibatis.builder.BuilderException: Error evaluating expression 'cityName == @com.weather.weatherexpert测试数据mon.utils.CityClass@CityEnum.XINZHOU.getName'. Cause: org.apache.ibatis.ognl.OgnlException: Could not get static field CityEnum from class com.weather.weatherexpert测试数据mon.utils.CityClass [java.lang.NoSuchFieldException: CityEnum]*/ < if test = "cityName == @com.weather.weatherexpert测试数据mon.utils.CityClass@CityEnum.XINZHOU.getName" > <!--wrong--> area_table </ if > |
可见,直接定义的枚举类可以正常使用,在类中定义的枚举类这样使用会报错,可能方法还没有找到。
如下正确:
1 2 3 |
< if test = "cityName == @com.a.b.c.CityClass$CityEnum@XINZHOU.getName" > <!--right--> name = #{username} </ if > |
Mybatis里使用枚举Enum判断
1 2 3 |
< 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");以上为个人经验,希望能给大家一个参考,也希望大家多多支持。
原文链接:https://programskills.blog.csdn.net/article/details/86490787
查看更多关于Mybatis条件if test如何使用枚举值的详细内容...