例如mysql的字段为:
type enum('project','task','execution') NOT NULL DEFAULT 'project',
deleted enum('0','1') NOT NULL DEFAULT '0',
多谢
Comment From: miemieYaho
没有
Comment From: cnscud
研究了一下, 使用一个定制的typeHandler可以实现:
/*
* Type Handler for like "Status" Enum String field.
*
* @author Felix Zhang 2024-05-06 10:30
* @version 1.0.0
/
@MappedJdbcTypes({JdbcType.OTHER})
@MappedTypes({String.class})
@Slf4j
public class StringEnumTypeHandler
@Override
public void setNonNullParameter(PreparedStatement ps, int i, T parameter, JdbcType jdbcType) throws SQLException {
log.info("String: " + parameter);
ps.setString(i, parameter);
}
@Override
public T getNullableResult(ResultSet rs, String columnName) throws SQLException {
log.info("value: " + rs.getString(columnName));
return (T) rs.getString(columnName);
}
@Override
public T getNullableResult(ResultSet rs, int columnIndex) throws SQLException {
return (T) rs.getString(columnIndex);
}
@Override
public T getNullableResult(CallableStatement cs, int columnIndex) throws SQLException {
return (T) cs.getString(columnIndex);
}
}
然后在mybatis配置里配置 type-handlers-package 为你的包名
然后Java里使用String类型, Jdbc类型就用Other就可以.
Java里也可以用 Integer, 不过就要另外写一个typeHandler了.