在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中的使用,可以根據實際情況選擇適合自己的方法。