项目中有系统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

最新文章

  1. input[file]标签的accept=”image/*”属性响应很慢的解决办法
  2. stanford coursera 机器学习编程作业 exercise 5(正则化线性回归及偏差和方差)
  3. 《深入浅出WPF》笔记四
  4. linux修改open files数
  5. hdu 5752 Sqrt Bo
  6. 记录一下在WinXP上搭建Apache的httpd+PHP+MySQL+Wordpress的过程
  7. 线性求中位数 poj2388
  8. python manage.py shell之后的一些错误:
  9. jquery.tochart.js
  10. flexbox 弹性盒子
  11. PorterDuffXferMode不正确的真正原因PorterDuffXferMode深入试验)
  12. 解决phpstudy在 cmd窗口输出 php5 中文显示乱码问题
  13. SpringBoot初探(上传文件)
  14. [转] - spark推荐 - 从50多分钟到3分钟的优化
  15. Monkey 命令收集相关 --追加Monkey自动化测试开源工具
  16. Windows下PythonQt编译(vs2015+Qt5.11.2+PythonQt 3.2)
  17. 数据库字典查询,从EF工具操作中提取的
  18. UVA-1153 Keep the Customer Satisfied (贪心)
  19. classlist和array.prototype.slice.call
  20. MFC加速键

热门文章

  1. flex步局 11.02
  2. IDM使用教程:利用IDM下载百度网盘文件
  3. JMeter学习记录收藏
  4. IDEA Dao层快速跳转Mapper.xml 文件的插件
  5. 动态代理中newProxyInstance中三个参数
  6. CMU Convex Optimization(凸优化)笔记1--凸集和凸函数
  7. Python--基本数据类型(可变/不可变类型)
  8. 第三章 sql 的约束
  9. python实现高斯图像金字塔
  10. vue的常用指令