在MyBatis中支持枚举类型有两种常用的方法:
示例代码如下:
public class MyEnumTypeHandler extends BaseTypeHandler<MyEnum> {
@Override
public void setNonNullParameter(PreparedStatement ps, int i, MyEnum parameter, JdbcType jdbcType) throws SQLException {
ps.setString(i, parameter.getValue());
}
@Override
public MyEnum getNullableResult(ResultSet rs, String columnName) throws SQLException {
return MyEnum.fromValue(rs.getString(columnName));
}
@Override
public MyEnum getNullableResult(ResultSet rs, int columnIndex) throws SQLException {
return MyEnum.fromValue(rs.getString(columnIndex));
}
@Override
public MyEnum getNullableResult(CallableStatement cs, int columnIndex) throws SQLException {
return MyEnum.fromValue(cs.getString(columnIndex));
}
}
在MyBatis的配置文件中注册TypeHandler:
<typeHandlers>
<typeHandler handler="com.example.MyEnumTypeHandler"/>
</typeHandlers>
示例配置如下:
<resultMap id="resultMap" type="com.example.MyEntity">
<id column="id" property="id"/>
<result column="enumProperty" property="enumProperty" javaType="com.example.MyEnum" typeHandler="org.apache.ibatis.type.EnumTypeHandler"/>
</resultMap>
以上是两种常用的方法来支持枚举类型在MyBatis中的使用,可以根据实际情况选择适合自己的方法。