您需要的是一个TypeHandler
首先,向您添加一个静态方法
TestEnum以返回
TestEnum给定的显示字符串:
public static TestEnum fromDisplay(String display){ for (TestEnum v : TestEnum.values()){ if (v.getDisplay().equals(display)){ return v; } } return null;}
然后使用它来创建您的TypeHandler:
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;public class TestEnumTypeHandler extends baseTypeHandler<TestEnum> { @Override public void setNonNullParameter(PreparedStatement ps, int i, TestEnum parameter, JdbcType jdbcType) throws SQLException { ps.setString(i, parameter.getDisplay()); } @Override public TestEnum getNullableResult(ResultSet rs, String columnName) throws SQLException { return TestEnum.fromDisplay(rs.getString(columnName)); } @Override public TestEnum getNullableResult(ResultSet rs, int columnIndex) throws SQLException { return TestEnum.fromDisplay(rs.getString(columnIndex)); } @Override public TestEnum getNullableResult(CallableStatement cs, int columnIndex) throws SQLException { return TestEnum.fromDisplay(cs.getString(columnIndex)); }}
最后,在mybatis xml中注册TypeHandler:
<typeHandlers> <typeHandler handler="blah.blah.TestEnumTypeHandler "/></typeHandlers>
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)