mybatis-plus数据查询、更新类型转换(String数组和String)
对于实体类,属性标签类型是数组[“java”, “python”],在数据库对应的字段类型是varchar,现在需要存储到数据库, 将String数组转换成字符串,从数据库获取数据, 将字符串转为String数组。
·
1、背景
对于实体类,属性标签类型是数组[“java”, “python”],在数据库对应的字段类型是varchar,现在需要存储到数据库, 将String数组转换成字符串,从数据库获取数据, 将字符串转为String数组
2、处理类
@MappedTypes({String[].class})
@MappedJdbcTypes({JdbcType.VARCHAR})
public class ArrayStringTypeHandler extends BaseTypeHandler<String[]> {
private static String[] strArray = new String[]{};
@Override
public void setNonNullParameter(PreparedStatement preparedStatement, int parameterIndex,
String[] parameter, JdbcType jdbcType) throws SQLException {
preparedStatement.setString(parameterIndex, JSON.toJSONString(parameter));
}
@Override
public String[] getNullableResult(ResultSet resultSet, String columnName)
throws SQLException {
return JSON.parseArray(resultSet.getString(columnName)).toArray(strArray);
}
@Override
public String[] getNullableResult(ResultSet resultSet, int columnIndex)
throws SQLException {
return JSON.parseArray(resultSet.getString(columnIndex)).toArray(strArray);
}
@Override
public String[] getNullableResult(CallableStatement callableStatement, int columnIndex)
throws SQLException {
return JSON.parseArray(callableStatement.getString(columnIndex)).toArray(strArray);
}
}
3、使用
// 属性使用注解
@TableField(typeHandler = ArrayStringTypeHandler.class, jdbcType = JdbcType.VARCHAR)
private String[] labelList;
4、测试
更新
==> Preparing: UPDATE subj_info SET label_list=? WHERE id=?
==> Parameters: ["java","python"](String), 1690595443903389697(String)
<== Updates: 1
查询
==> Preparing: SELECT id, label_list FROM subj_info WHERE id=?
==> Parameters: 1690595443903389697(String)
<== Columns: id, label_list
<== Row: 1690595443903389697, ["java","python"]
<== Total: 1
数据库存储值
["java","python"]

魔乐社区(Modelers.cn) 是一个中立、公益的人工智能社区,提供人工智能工具、模型、数据的托管、展示与应用协同服务,为人工智能开发及爱好者搭建开放的学习交流平台。社区通过理事会方式运作,由全产业链共同建设、共同运营、共同享有,推动国产AI生态繁荣发展。
更多推荐
所有评论(0)