spring boot + mybaits 处理枚举类 enum
枚举:

//实现层调用
orderMapper.getOrder(OrderStatus.DISCOUNT);
sql打印:
实际sql: select * from order where orderStatus = DISCOUNT
预期sql: select * from order where orderSatus = 11;
在不使用更改写法
orderMapper.getOrder(OrderStatus.DISCOUNT.getCode());
前提条件下。
源码:org.apache.ibatis.type.BaseTypeHandler 抽象类

抽象方法 :

需要重写 继承 BaseTypeHandler 重写方法
package order.handler; import java.sql.CallableStatement;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException; import org.apache.ibatis.type.BaseTypeHandler;
import org.apache.ibatis.type.JdbcType; import common.enums.BaseEnum; public class StringEnumTypeHandler extends BaseTypeHandler<BaseEnum> { @Override
public void setNonNullParameter(PreparedStatement ps, int i, BaseEnum parameter, JdbcType jdbcType)
throws SQLException {
//核心方法 指定枚举获取code的方法。同理 orderMapper.getOrder(OrderStatus.DISCOUNT.getCode());
ps.setString(i, parameter.getCode().toString()); } @Override
public BaseEnum getNullableResult(ResultSet rs, String columnName) throws SQLException {
String val = rs.getString(columnName);
return getEnum(Integer.parseInt(val));
} @Override
public BaseEnum getNullableResult(ResultSet rs, int columnIndex) throws SQLException { return getEnum(Integer.parseInt(rs.getString(columnIndex)));
} @Override
public BaseEnum getNullableResult(CallableStatement cs, int columnIndex) throws SQLException { return getEnum(Integer.parseInt(cs.getNString(columnIndex)));
} private BaseEnum getEnum(int val) {
Class<BaseEnum> sexClass = BaseEnum.class;
BaseEnum[] sexs = sexClass.getEnumConstants(); for (BaseEnum se : sexs) {
if (se.getCode() == val) {
return se;
}
}
return null;
}
}
配置mybatis.config

orderMapper.xml
修改前:where type = #{type,jdbcType = int}
修改后:

基类:

所有的枚举都实现这个接口,然后动态加载方法调用枚举的getCode()方法。即可
spring boot + mybaits 处理枚举类 enum的更多相关文章
- java中的枚举类enum
enum SeasonEnum {//枚举类: 本类规定了SeasonEnum(季节)类只能有四个对象SPRING,SUMMER,AUMUTN,WINTER //创建枚举类的的四个对象SPRING,S ...
- Java枚举类enum
枚举类enum是JDK1.5引入的,之前都是用public static final int enum_value来代替枚举类的.枚举类enum是一种特殊的类,它默认继承了类java.lang.Enu ...
- Java基础(七)泛型数组列表ArrayList与枚举类Enum
一.泛型数组列表ArrayList 1.在Java中,ArrayList类可以解决运行时动态更改数组的问题.ArrayList使用起来有点像数组,但是在添加或删除元素时,具有自动调节数组容量的功能,而 ...
- spring boot+mybaits+mysql+generato(逆向工程)+前后台数据交互
如按照我博客上没有弄出来 请在下面留言 我好修改 谢谢 小弟使用的是Eclipse 首先下载STS插件 help--->Elipse Marketplace--->find搜索栏里面搜索S ...
- java 数据类型:枚举类enum、对比方法compreTo()、获取名字.name()、获取对应值的枚举类Enum.valueOf()、包含构造方法和抽象方法的enum;实现接口;
问题引入 为了将某一数据类型的值限定在可选的合理范围内,比如季节只有四个:春夏秋冬. 什么是枚举类 Java5之后新增了enum关键字(他与class,interface关键字地位相同)用来定义枚举类 ...
- java 枚举类 enum 总结
枚举定义: enum是计算机编程语言中的一种数据类型.枚举类型:在实际问题中,有些变量的取值被限定在一个有限的范围内.例如,一个星期内只有七天,一年只有十二个月,一个班每周有六门课程等等.如果把这些量 ...
- java 枚举 类 enum
public abstract class Enum<E extends Enum<E>> implements Comparable<E>, Serializab ...
- 枚举类 enum,结构体类 struct
1.枚举类型的值,直观易于理解,见词知意. 格式: enum 枚举类名:值类型 { 值1, 值2, 值n } 每个值默认(省略“:值类型”)以int型数据存储,从0开始. 使用格式:枚举类名 变量=枚 ...
- spring boot JPA中实体类常用注解
spring boot jpa中的注解很多,参数也比较多.没必要全部记住,但是经常查看官方文档也比较麻烦,记录一下一些常用的注解.通过一些具体的例子来帮助记忆. @Entity @Table(name ...
随机推荐
- PB笔记之数据窗口大小自适应的方式
1.在OPEN 事件中设置数据窗口大小属性 tab_1.tabpage_6.dw_6.x=0tab_1.tabpage_6.dw_6.y=0tab_1.tabpage_6.dw_6.width=thi ...
- Hibernate常用api以及增删改查
一 .API的定义 所谓的API全称就是(Application Programming Interface,应用程序编程接口).就是类库对外提供的接口.类.枚举.注解等元素. 如:JDK API ...
- NRF52832 Mesh SDK 调试记录
1.Mesh SDK模型,Node节点在重启之后,心跳不能正常保持,即无法在次启动心跳的解决办法: 原因:主要是因为相关模型没有从Flash里面读取所致,因此只需要回复保存配置即可. 关键代码如下: ...
- Apollo 与 .net core
appsettings配置内容 { "Apollo": { "AppId": "netcore", "Env": &qu ...
- PCA(Principal Component Analysis)笔记
PCA是机器学习中recognition中的传统方法,今天下午遇到了,梳理记一下 提出背景: 二维空间里,2个相近的样本,有更大概率具有相同的属性,但是在高维空间里,由于样本在高维空间里,呈现越来越稀 ...
- leetcode算法题(4)
问题描述: 罗马数字包含以下七种字符: I, V, X, L,C,D 和 M. 我的解答: package Simple; public class RoamnInt { public static ...
- flask/app.py-add_url_rule源码分析
之前分析route方法的时候,可以看到中间会调用add_url_rule方法,add_url_rule方法和route方法一样属于Flask这个类的. add_url_rule方法主要用来连接url规 ...
- Ubuntu安装opencv3.4.4教程
1 去官网下载opencv 在本教程中选用的是opencv3.4.4,下载链接 http://opencv.org/releases.html ,选择sources. 2 解压 unzip openc ...
- 学习笔记之Google
Google Pro Tip: Use Back-of-the-envelope-calculations to Choose the Best Design - High Scalability - ...
- English-手机销售英文场景
http://www.engpx.com/news/18216.html https://wenku.baidu.com/view/d67a103203768e9951e79b89680203d8ce ...