mybatis枚举typeHandler
枚举typeHandler
在绝大多数情况下,typeHandler因为枚举而使用,MyBatis已经定义了两个类作为枚举类型的支持,这两个类分别是:
•EnumOrdinalTypeHandler。
•EnumTypeHandler。
因为它们的作用不大,所以在大部分情况下,我们都不用它们,不过我们还是要稍微了解一下它们的用法。
EnumOrdinalTypeHandler
EnumOrdinalTypeHandler是按MyBatis根据枚举数组下标索引的方式进行匹配的,也是枚举类型的默认转换类,它要求数据库返回一个整数作为其下标,它会根据下标找到对应的枚举类型
EnumTypeHandler
EnumTypeHandler会把使用的名称转化为对应的枚举,比如它会根据数据库返回的字符串“MALE”,进行Enum.val-ueOf(SexEnum.class,"MALE");转换
自定义枚举typeHandler
代码清单4-23:SexEnumTypeHandler
package com.xc.util.typehandler;import com.xc.enumerate.SexEnum;import org.apache.ibatis.type.JdbcType;import org.apache.ibatis.type.MappedJdbcTypes;import org.apache.ibatis.type.MappedTypes;import org.apache.ibatis.type.TypeHandler;import java.sql.CallableStatement;import java.sql.PreparedStatement;import java.sql.ResultSet;import java.sql.SQLException;@MappedTypes(SexEnum.
class)@MappedJdbcTypes(JdbcType.INTEGER)
publicclass SexEnumTypeHandler implements TypeHandler<SexEnum> { @Override
publicvoid setParameter(PreparedStatement ps, int i, SexEnum parameter, JdbcType jdbcType) throws SQLException { ps.setInt(i, parameter.getId());
}
@Override
public SexEnum getResult(ResultSet rs, String columnName) throws SQLException {int id = rs.getInt(columnName);return SexEnum.getSexById(id); }
@Override
public SexEnum getResult(ResultSet rs, int columnIndex) throws SQLException {int id = rs.getInt(columnIndex);return SexEnum.getSexById(id); }
@Override
public SexEnum getResult(CallableStatement cs, int columnIndex) throws SQLException {int id = cs.getInt(columnIndex);return SexEnum.getSexById(id); }
}
package com.xc.enumerate;publicenum SexEnum { MALE(
1, "男"), FEMALE(0, "女");privateint id;private String name; SexEnum(
int id, String name) {this.id = id;this.name = name; }
publicstatic SexEnum getSexById(int id) {for (SexEnum sex : SexEnum.values()) {if (sex.getId() == id) {return sex; }
}
returnnull; }
publicint getId() {return id; }
publicvoid setId(int id) {this.id = id; }
public String getName() {return name; }
publicvoid setName(String name) {this.name = name; }
}
mybatis typeHandler类型转换器
mybatis 自定义typeHandler
以上是 mybatis枚举typeHandler 的全部内容, 来源链接: utcz.com/z/508825.html