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.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:
1
2
3
4
5
6
7
8
9
10
|
<!--<if test="cityName == @com.weather.weatherexpert.common.utils.City.XINZHOU@getName"><!–wrong,java.lang.ClassNotFoundException: Unable to resolve class: com.weather.weatherexpert.common.utils.City.XINZHOU–>--> <!--<if test="cityName == @com.weather.weatherexpert.common.utils.City@XINZHOU@getName"><!–wrong,[org.apache.ibatis.ognl.ParseException: Encountered " "@" "@ "" at line 1, column 65.–>--> < 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.错误
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.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:
1
2
3
4
5
6
|
/* 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 > |
可见,直接定义的枚举类可以正常使用,在类中定义的枚举类这样使用会报错,可能方法还没有找到。
如下正确:
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