当前使用版本(必填,否则不予处理)
3.5.5
该问题是如何引起的?(确定最新版也有问题再提!!!)
由于类型进行了泛型擦除,比方说我的数据字段类型为 List>(){})
那么可以有效解决这个问题
重现步骤(如果有就写完整)
报错信息
Comment From: miemieYaho
不支持
Comment From: toshawn
问一下什么时候发布 3.5.6 版本 @nieqiurong
Comment From: nieqiurong
已发布3.5.6-SNAPSHOT.
Comment From: HillCheuang
之前我解决过此类类似的问题,需要自定义实现BaseTypeHandler【我是想存List
public class LongListTypeHandler extends BaseTypeHandler<List<Long>> {
@Override
public void setNonNullParameter(PreparedStatement ps, int i, List<Long> parameter, JdbcType jdbcType) throws SQLException {
//将 List<Long> 转换为字符串,存储到数据库中
String str = StringUtils.join(parameter.toArray(), ",");
ps.setString(i, str);
}
@Override
public List<Long> getNullableResult(ResultSet rs, String columnName) throws SQLException {
String str = rs.getString(columnName);
return parse(str);
}
@Override
public List<Long> getNullableResult(ResultSet rs, int columnIndex) throws SQLException {
String str = rs.getString(columnIndex);
return parse(str);
}
@Override
public List<Long> getNullableResult(CallableStatement cs, int columnIndex) throws SQLException {
String str = cs.getString(columnIndex);
return parse(str);
}
private static List<Long> parse(String str) {
if (StringUtils.isEmpty(str)) {
return Collections.emptyList();
}
String[] arr = str.split(",");
List<Long> res = new ArrayList<>();
for (String s : arr) {
res.add(Long.parseLong(s));
}
return res;
}
}
@Data
@NoArgsConstructor
@AllArgsConstructor
@Builder
@TableName(value = "test",autoResultMap = true)
public class Test {
@TableId(type= IdType.AUTO)
private Long id;
@TableField(value = "aids",typeHandler = LongListTypeHandler.class)
private List<Long> aidList;
}
Comment From: loren-coding
这个 xml 文件的 resultMap 生效吗?