这里 就先不贴 conversion 的代码了(主要的就这句。。。。),因为他们的报错都出自一个问题。。。。
@TableField(typeHandler = MallSettingTypeHandler.class)
...............................................................................
@Slf4j
@MappedTypes({这里写你要类型转换的类就行(想简单点直接继承TypeHandler下抽象类).class})
@MappedJdbcTypes(JdbcType.VARCHAR)
public class MallSettingTypeHandler extends BaseTypeHandler {
private Class> type;
public MallSettingTypeHandler(Class> type) {
if (log.isTraceEnabled()) {
log.trace("MallSettingTypeHandler(" + type + ")");
}
Assert.notNull(type, "Type argument cannot be null");
this.type = type;
}
protected Object parse(String json) {
return JSON.parseObject(json, type);
}
protected String toJson(Object obj) {
return JSON.toJSONString(obj, SerializerFeature.WriteMapNullValue,
SerializerFeature.WriteNullListAsEmpty, SerializerFeature.WriteNullStringAsEmpty);
}
@Override
public void setNonNullParameter(PreparedStatement ps, int i, Object parameter, JdbcType jdbcType) throws SQLException {
ps.setString(i, toJson(parameter));
}
@Override
public Object getNullableResult(ResultSet rs, String columnName) throws SQLException {
final String json = rs.getString(columnName);
return StringUtils.isBlank(json) ? null : parse(json);
}
@Override
public Object getNullableResult(ResultSet rs, int columnIndex) throws SQLException {
final String json = rs.getString(columnIndex);
return StringUtils.isBlank(json) ? null : parse(json);
}
@Override
public Object getNullableResult(CallableStatement cs, int columnIndex) throws SQLException {
final String json = cs.getString(columnIndex);
return StringUtils.isBlank(json) ? null : parse(json);
}
}
如果你是自己写的 生成类 ,亦或者是在电脑配置 跟不上你的操作时,亦或者 你的开发工具破解版。。。。导致你的数据上的错乱,执行过程的不同步。。。 只要你觉得你写的代码绝对没问题,一个一个字母符号注释 都看过了,确认无误,那么就 给你的实体类 添加个无参构造器、有参构造器吧!!!