在 MyBatis 中处理枚举类型的映射有两种常用的方法:
- 使用 TypeHandler:可以自定义一个实现了 TypeHandler 接口的类来处理枚举类型的映射。在这个类中,需要实现 getResult() 和 setParameter() 方法来处理数据库字段和 Java 对象之间的转换。
例如,假设有一个枚举类型 Gender:
public enum Gender { MALE, FEMALE }
然后定义一个 GenderTypeHandler 类来处理 Gender 类型的映射:
public class GenderTypeHandler extends BaseTypeHandler{ @Override public void setNonNullParameter(PreparedStatement ps, int i, Gender parameter, JdbcType jdbcType) throws SQLException { ps.setString(i, parameter.name()); } @Override public Gender getNullableResult(ResultSet rs, String columnName) throws SQLException { String value = https://www.yisu.com/ask/rs.getString(columnName);"hljs">int columnIndex) throws SQLException { String value = https://www.yisu.com/ask/rs.getString(columnIndex);"hljs">int columnIndex) throws SQLException { String value = https://www.yisu.com/ask/cs.getString(columnIndex);> 在 MyBatis 的配置文件中注册这个 TypeHandler:
- 使用 EnumTypeHandler:MyBatis 提供了一个 EnumTypeHandler 类来处理枚举类型的映射。只需在映射文件中配置对应的枚举类型即可。
例如,假设有一个枚举类型 Gender,可以在映射文件中这样配置:
这样在查询时 MyBatis 就会自动使用 EnumTypeHandler 来处理 Gender 类型的映射。