例如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 extends BaseTypeHandler {

@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了.