2. BaseTypeHandler是mybatis提供的基础转换类,该类实现了TypeHandler接口并提供很多公用方法,建议每个自定义转换类都继承它。 示例 使用一段代码,将枚举类EnumStatus中的code属性存储到数据库对应字段statusCustom。 自定义转换类 1. package 2. 3. import 4. import 5. import 6. import 7. 8. import 9. imp...
无论是 MyBatis 在预处理语句(PreparedStatement)中设置一个参数时,还是从结果集中取出一个值时, 都会用类型处理器将获取的值以合适的方式转换成 Java 类型。下表描述了一些默认的类型处理器。 枚举类型默认的 typeHandler 上文已经说到,Mybatis 为不同类型的参数自动设置来不通的类型处理器,对于枚举类型来说,默认...
首先,需要在Java代码中创建一个枚举类型。例如,以下是一个性别枚举类型: ```java public enum Gender { MALE, FEMALE; } ``` 2.启用枚举类型转换 在MyBatis的配置文件中,启用枚举类型转换。例如,在`mybatis-config.xml`中添加以下配置: ```xml <configuration> ... <settings> <setting name="mapUnderscore...
那么就会直接回调getNullableResult(ResultSet rs, String columnName)这个方法,根据名称得到当行的当前列的值,然后我们在这里去调用枚举,匹配枚举中的每一个值,相等的话直接返回该枚举,达到自动转换成我们想要的枚举的效果。
自定义mybatis枚举转换,原理是如果用户没有定义自己的枚举转换工具,mybatis在解析枚举类时会自动获取mybatis的BaseTypeHandler,来转换枚举类,我们只需要重写这个枚举转换器,并将它指定为默认的转换器就好了 首先,定义一个通用接口BaseEnum: importjava.util.Arrays;importjava.util.Optional;publicinterfaceBaseEnum<T>{ ...
有时候我们需要在数据库中把Java中的枚举字段成数字存储起来,但又不想对每个枚举做hander配置,这个时候就需要一个统一的方式进行处理,一处配置对每个需要转换的枚举都生效,下面直接上代码。 第一步:创建一个接口,提供一个返回code的方法 publicinterfaceCodeEnum<T>{/*** @return 返回枚举Code*/TgetCode();} 第...
MyBatis内置了两个枚举转换器分别是:org.apache.ibatis.type.EnumTypeHandler和org.apache.ibatis.type.EnumOrdinalTypeHandler。 EnumTypeHandler mybatis 中默认的枚举转换器,是获取枚举中的name属性。 EnumOrdinalTypeHandler 获取枚举中ordinal属性,就是例如索引一样的东西,不过是从 1 开始递增的。
在MyBatis中,可以使用TypeHandler来实现枚举类型的转换。TypeHandler是MyBatis用来处理Java类型与数据库类型之间的转换的一个接口,可以自定义TypeHandler来处理枚举类型的转换。 下面是一个示例,演示如何将一个枚举类型转换成数据库值: 创建一个枚举类型: publicenumGender{MALE,FEMALE; ...
通过getValue()获取枚举值。 通过getLabel()获取枚举的label属性。 通过valueOfEnum()将Integer值转换为指定的枚举类型。 普通枚举类 public enum CommonsType implements DisplayedEnum { NORMAL("正常", 0), INVALID("无效", 1); String label; Integer value; ...