好得很程序员自学网

<tfoot draggable='sEl'></tfoot>

Mybatis条件if test如何使用枚举值

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">&lt;!&ndash;wrong,java.lang.ClassNotFoundException: Unable to resolve class: com.weather.weatherexpert测试数据mon.utils.City.XINZHOU&ndash;&gt;-->

<!--<if test="cityName == @com.weather.weatherexpert测试数据mon.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测试数据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如何使用枚举值的详细内容...

  阅读:22次