1.写一个对应枚举的工具类:
import java.sql.CallableStatement;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import org.apache.ibatis.type.BaseTypeHandler;
import org.apache.ibatis.type.JdbcType;
import com.capgemini.capgenie.feedback.domain.model.feedback.InternalRequestFeedbackStatus;
public class InternalRequestFeedbackStatusTypeHandler extends BaseTypeHandler<InternalRequestFeedbackStatus> {
@Override
public void setNonNullParameter(PreparedStatement ps, int i, InternalRequestFeedbackStatus parameter, JdbcType jdbcType) throws SQLException {
ps.setInt(i, parameter.getValue());
}
@Override
public InternalRequestFeedbackStatus getNullableResult(ResultSet rs, String columnName) throws SQLException {
return InternalRequestFeedbackStatus.fromValue(rs.getInt(columnName));
}
@Override
public InternalRequestFeedbackStatus getNullableResult(ResultSet rs, int columnIndex) throws SQLException {
return InternalRequestFeedbackStatus.fromValue(rs.getInt(columnIndex));
}
@Override
public InternalRequestFeedbackStatus getNullableResult(CallableStatement cs, int columnIndex) throws SQLException {
return InternalRequestFeedbackStatus.fromValue(cs.getInt(columnIndex));
}
}
2.在枚举中加入红色部分:
import java.util.HashMap;
import java.util.Map;
import com.fasterxml.jackson.annotation.JsonCreator;
import com.fasterxml.jackson.annotation.JsonValue;
public enum InternalRequestFeedbackStatus {
REQUESTED(2, "Internal requested feedback"),
REPLIED(3, "Internal replied feedback"),
DECLINED(4, "Internal decline feedback");
private int value;
private String description;
private static Map<Integer, InternalRequestFeedbackStatus> map = new HashMap<>();
static {
for (InternalRequestFeedbackStatus status : InternalRequestFeedbackStatus.values()) {
map.put(status.getValue(), status);
}
}
InternalRequestFeedbackStatus(int value, String description) {
this.value = value;
this.description = description;
}
@JsonValue
public int getValue() {
return value;
}
public String getDescription() {
return description;
}
@JsonCreator
public static InternalRequestFeedbackStatus fromValue(Integer id) {
return map.get(id);
}
}
3.在resultMap中如下配置:
<result
property="status"
column="id_status" typeHandler="com.capgemini.capgenie.feedback.infrastructure.util.InternalRequestFeedbackStatusTypeHandler"
/>