MyBatis 中如何调用 Java 的 enum (枚举) 字段
来源:互联网 发布:用户登录深澜软件 编辑:程序博客网 时间:2024/06/14 04:21
事先作成一 enum,如下:
public enum CityCode { ALL("000"), BEIJING("010"), SHANGHAI("021"), private String code; CityCode(String code) { this.code = code; } public String val() { return this.code; }}
在mapper文件中,想判断一个参数的值是否跟 CityCode.ALL
的值一致的时候,我想当然的像下面这么写了:
<if test="area != com.test.constant.CityCode.ALL.val" > AND p.`city`=#{area}</if>
我为什么会这么写?
因为之前有在 mapper 文件中判断过 List
对象的size 是不是为 0的,就是下面这么写的:
<if test="statusList.size > 0" > // to do sth.</if>con
但是,结果是行,mybatis 报了下面的错:
org.mybatis.spring.MyBatisSystemException: nested exception is org.apache.ibatis.binding.BindingException: Parameter 'com' not found. Available parameters are [area, param1, param2, now] at org.mybatis.spring.MyBatisExceptionTranslator.translateExceptionIfPossible(MyBatisExceptionTranslator.java:79) ~[mybatis-spring-1.3.0.jar:1.3.0] at org.mybatis.spring.SqlSessionTemplate$SqlSessionInterceptor.invoke(SqlSessionTemplate.java:447) ~[mybatis-spring-1.3.0.jar:1.3.0] at com.sun.proxy.$Proxy22.selectList(Unknown Source) ~[?:?] at org.mybatis.spring.SqlSessionTemplate.selectList(SqlSessionTemplate.java:231) ~[mybatis-spring-1.3.0.jar:1.3.0] at org.apache.ibatis.binding.MapperMethod.executeForMany(MapperMethod.java:128) ~[mybatis-3.4.0.jar:3.4.0] at org.apache.ibatis.binding.MapperMethod.execute(MapperMethod.java:68) ~[mybatis-3.4.0.jar:3.4.0] at org.apache.ibatis.binding.MapperProxy.invoke(MapperProxy.java:53) ~[mybatis-3.4.0.jar:3.4.0] at com.sun.proxy.$Proxy38.performance(Unknown Source) ~[?:?]
后来,又想起来,之前有过在 mybatis 中访问静态方法的示例,试了一下,果然可以,enum 修改如下:
public enum CityCode { ALL("000"), BEIJING("010"), SHANGHAI("021"), private String code; CityCode(String code) { this.code = code; } public String val() { return this.code; } public static boolean isAll(String code) { return ALL.val().equals(code); }}
然后,mapper 文件修改如下:
<if test="!@com.test.constant.CityCode@isAll(area)" > AND p.`city`=#{area}</if>
请注意一下语法: @xxxxClass@method(parameter)
我上面那个test部分的第一个 ! 是用来对结果取反的,它不属于语法的一部分。当然,你可以不用 ! 改用 not 也一样的。
0 0
- MyBatis 中如何调用 Java 的 enum (枚举) 字段
- java中Enum(枚举)的使用
- java中枚举enum的使用
- java中枚举类型Enum的用法
- Java中枚举(Enum)的使用
- Java中枚举enum的应用
- Java中枚举Enum的实际应用
- java的枚举enum
- java myBatis 枚举字段处理
- java enum枚举的使用
- java 枚举的使用 enum
- Java enum枚举的用法
- java enum枚举的使用
- java里面的枚举enum
- java enum枚举的用法
- java枚举enum的使用
- 关于java的枚举enum
- Java枚举enum的用法
- 【JZOJ4937】【GDKOI2017模拟1.12】与运算
- 反向代理
- K近邻-kd树
- 命令模式总结
- goodbye 2016 A New Year and Hurry
- MyBatis 中如何调用 Java 的 enum (枚举) 字段
- javaee准备
- 享元模式
- 2 同步 异步 阻塞 非阻塞
- Python编程入门
- Excel导出
- STM32F105/107系列以太网PHY设计资料
- com.jacob.com.ComFailException: VariantChangeType failed
- Kinect v2控制鼠标原理分析和源码(0积分下载)