字符串属性转变List属性存入数据库
2024-09-25 09:40:47
项目中有系统IP字段,现将string转List存入数据库,每个功能块持久层实现方法不一样(分为jpa和mp)
jpa:
@Convert(converter = JpaConverterListJson.class)
private List<String> hostIp; public class JpaConverterListJson implements AttributeConverter<Object, String> {
@Override
public String convertToDatabaseColumn(Object o) {
return JSON.toJSONString(o);
} @Override
public Object convertToEntityAttribute(String s) {
//兼容历史数据
if (!JSONUtil.isJson(s)) {
return new JSONArray(Arrays.asList(s));
}
return JSON.parseArray(s);
}
ps:貌似@Lob也可以直接保存,没试过
mp:
@TableField(typeHandler = ArrayTypeHandler.class)
private List<String> hostIp;
@MappedTypes(List.class)
@MappedJdbcTypes(JdbcType.VARCHAR)
public class ArrayTypeHandler extends BaseTypeHandler<List> {
@Override
public void setNonNullParameter(PreparedStatement preparedStatement, int i, List list, JdbcType jdbcType) throws SQLException {
preparedStatement.setString(i, JSON.toJSONString(list));
}
@Override
public List getNullableResult(ResultSet resultSet, String s) throws SQLException {
//兼容历史数据
if (!JSONUtil.isJson(resultSet.getString(s))) {
return new JSONArray(Arrays.asList(resultSet.getString(s)));
}
return JSON.parseArray(resultSet.getString(s));
}
@Override
public List getNullableResult(ResultSet resultSet, int i) throws SQLException {
JSONArray jsonArray = JSONArray.parseArray(resultSet.getString(i));
return jsonArray;
}
@Override
public List getNullableResult(CallableStatement callableStatement, int i) throws SQLException {
JSONArray jsonArray = JSONArray.parseArray(callableStatement.getString(i));
return jsonArray;
}
//单这样查询获取不到,mp查询跟增改使用的ResultMap是不同的 //注解的typeHandler只生效于insert和update,要生效select必须@TableName(autoResultMap=true)
//但在自定义查询中添加了autoResultMap也没有用,还要在配置里加上map,查询结果指向它
<resultMap id="BaseResultMap" type="com.jk.cmdb.setting.entity.CmdbPc">
<result column="host_ip" property="hostIp"
typeHandler="com.jk.moinc.framework.ArrayTypeHandler"/>
</resultMap>
https://www.jianshu.com/p/1fbaff7fb187
https://github.com/baomidou/mybatis-plus/issues/357
jpa:
https://greenhtml.com/archives/153.html
https://blog.csdn.net/losfog/article/details/88046161
ps:如果是自定义的数组字段,是无法直接存入数据库也无法通过上述方式,那么存储转json字符串,取出转jsonArray
最新文章
- input[file]标签的accept=”image/*”属性响应很慢的解决办法
- stanford coursera 机器学习编程作业 exercise 5(正则化线性回归及偏差和方差)
- 《深入浅出WPF》笔记四
- linux修改open files数
- hdu 5752 Sqrt Bo
- 记录一下在WinXP上搭建Apache的httpd+PHP+MySQL+Wordpress的过程
- 线性求中位数 poj2388
- python manage.py shell之后的一些错误:
- jquery.tochart.js
- flexbox 弹性盒子
- PorterDuffXferMode不正确的真正原因PorterDuffXferMode深入试验)
- 解决phpstudy在 cmd窗口输出 php5 中文显示乱码问题
- SpringBoot初探(上传文件)
- [转] - spark推荐 - 从50多分钟到3分钟的优化
- Monkey 命令收集相关 --追加Monkey自动化测试开源工具
- Windows下PythonQt编译(vs2015+Qt5.11.2+PythonQt 3.2)
- 数据库字典查询,从EF工具操作中提取的
- UVA-1153 Keep the Customer Satisfied (贪心)
- classlist和array.prototype.slice.call
- MFC加速键