当前位置:Gxlcms > 数据库问题 > json存数据库时处理器,jsonHandler/jsonArrayHandler

json存数据库时处理器,jsonHandler/jsonArrayHandler

时间:2021-07-01 10:21:17 帮助过:18人阅读

class ObjectJsonHandler<T> extends BaseTypeHandler<T> { private Class<T> clazz;   

   /**构造函数*/ public ObjectJsonHandler(Class<T> clazz) { if (clazz == null) { throw new IllegalArgumentException("Type argument cannot be null"); } this.clazz = clazz; } private NameFilter nameFilter = (object, name, value) -> name; /** * 设置非空参数 */ @Override public void setNonNullParameter(PreparedStatement ps, int i, T parameter, JdbcType jdbcType) throws SQLException { ps.setString(i, JSON.toJSONString(parameter, nameFilter)); } /** * 根据列名,获取可以为空的结果 */ @Override public T getNullableResult(ResultSet rs, String columnName) throws SQLException { String sqlJson = rs.getString(columnName); if (null != sqlJson) { return JSONObject.parseObject(sqlJson, clazz); } return null; } /** * 根据列索引,获取可以为空的结果 */ @Override public T getNullableResult(ResultSet rs, int columnIndex) throws SQLException { String sqlJson = rs.getString(columnIndex); if (null != sqlJson) { return JSONObject.parseObject(sqlJson, clazz); } return null; } @Override public T getNullableResult(CallableStatement cs, int columnIndex) throws SQLException { String sqlJson = cs.getString(columnIndex); if (null != sqlJson) { return JSONObject.parseObject(sqlJson, clazz); } return null; } }

2、继承ObjectJsonHandler

  1. <span style="color: rgba(0, 128, 0, 1)">/**</span><span style="color: rgba(0, 128, 0, 1)">
  2. * @Author jijiecong
  3. * @Date 2021/4/20 11:49
  4. * @Version 1.0
  5. * @Description 评价扩展字段json处理器
  6. </span><span style="color: rgba(0, 128, 0, 1)">*/</span>
  7. <span style="color: rgba(0, 0, 255, 1)">public</span> <span style="color: rgba(0, 0, 255, 1)">class</span> EvaluationAttributesJsonHandler <span style="color: rgba(0, 0, 255, 1)">extends</span> ObjectJsonHandler<EvaluationAttributesEntity><span style="color: rgba(0, 0, 0, 1)"> {
  8. </span><span style="color: rgba(0, 0, 255, 1)">public</span><span style="color: rgba(0, 0, 0, 1)"> EvaluationAttributesJsonHandler() {
  9. </span><span style="color: rgba(0, 0, 255, 1)">super</span>(EvaluationAttributesEntity.<span style="color: rgba(0, 0, 255, 1)">class</span><span style="color: rgba(0, 0, 0, 1)">);
  10. }
  11. }</span>

 

二、List对象转JsonArray

1、继承BaseTypeHandler

覆盖setNonNullParameter(),getNullableResult(),getNullableResult(),getNullableResult()方法

  1. **
  2. *<span style="color: rgba(0, 0, 0, 1)"> ObjectJsonArrayHandler
  3. </span>*<span style="color: rgba(0, 0, 0, 1)"> JSONArray处理类
  4. </span>*
  5. * @version v1.0.0
  6. * @date 2020/7/23
  7. */
  8. <span style="color: rgba(0, 0, 255, 1)">public</span> <span style="color: rgba(0, 0, 255, 1)">class</span> ObjectJsonArrayHandler<T> <span style="color: rgba(0, 0, 255, 1)">extends</span> BaseTypeHandler<List<T>><span style="color: rgba(0, 0, 0, 1)"> {
  9. </span><span style="color: rgba(0, 0, 255, 1)">private</span> <span style="color: rgba(0, 0, 255, 1)">final</span> Class<T><span style="color: rgba(0, 0, 0, 1)"> clazz;
  10. </span><span style="color: rgba(0, 0, 255, 1)">public</span> ObjectJsonArrayHandler(Class<T><span style="color: rgba(0, 0, 0, 1)"> clazz) {
  11. </span><span style="color: rgba(0, 0, 255, 1)">if</span> (clazz == <span style="color: rgba(0, 0, 255, 1)">null</span><span style="color: rgba(0, 0, 0, 1)">) {
  12. </span><span style="color: rgba(0, 0, 255, 1)">throw</span> <span style="color: rgba(0, 0, 255, 1)">new</span> IllegalArgumentException("Type argument cannot be null"<span style="color: rgba(0, 0, 0, 1)">);
  13. } </span><span style="color: rgba(0, 0, 255, 1)">else</span><span style="color: rgba(0, 0, 0, 1)"> {
  14. </span><span style="color: rgba(0, 0, 255, 1)">this</span>.clazz =<span style="color: rgba(0, 0, 0, 1)"> clazz;
  15. }
  16. }
  17. @Override
  18. </span><span style="color: rgba(0, 0, 255, 1)">public</span> <span style="color: rgba(0, 0, 255, 1)">void</span> setNonNullParameter(PreparedStatement ps, <span style="color: rgba(0, 0, 255, 1)">int</span> i, List<T> ts, JdbcType jdbcType) <span style="color: rgba(0, 0, 255, 1)">throws</span><span style="color: rgba(0, 0, 0, 1)"> SQLException {
  19. ps.setString(i, JSONArray.toJSONString(ts));
  20. }
  21. @Override
  22. </span><span style="color: rgba(0, 0, 255, 1)">public</span> List<T> getNullableResult(ResultSet rs, String s) <span style="color: rgba(0, 0, 255, 1)">throws</span><span style="color: rgba(0, 0, 0, 1)"> SQLException {
  23. String jsonArrayStr </span>=<span style="color: rgba(0, 0, 0, 1)"> rs.getString(s);
  24. </span><span style="color: rgba(0, 0, 255, 1)">if</span> (<span style="color: rgba(0, 0, 255, 1)">null</span> !=<span style="color: rgba(0, 0, 0, 1)"> jsonArrayStr) {
  25. </span><span style="color: rgba(0, 0, 255, 1)">return</span><span style="color: rgba(0, 0, 0, 1)"> JSONArray.parseArray(jsonArrayStr).toJavaList(clazz);
  26. }
  27. </span><span style="color: rgba(0, 0, 255, 1)">return</span> <span style="color: rgba(0, 0, 255, 1)">null</span><span style="color: rgba(0, 0, 0, 1)">;
  28. }
  29. @Override
  30. </span><span style="color: rgba(0, 0, 255, 1)">public</span> List<T> getNullableResult(ResultSet rs, <span style="color: rgba(0, 0, 255, 1)">int</span> i) <span style="color: rgba(0, 0, 255, 1)">throws</span><span style="color: rgba(0, 0, 0, 1)"> SQLException {
  31. String jsonArrayStr </span>=<span style="color: rgba(0, 0, 0, 1)"> rs.getString(i);
  32. </span><span style="color: rgba(0, 0, 255, 1)">if</span> (<span style="color: rgba(0, 0, 255, 1)">null</span> !=<span style="color: rgba(0, 0, 0, 1)"> jsonArrayStr) {
  33. </span><span style="color: rgba(0, 0, 255, 1)">return</span><span style="color: rgba(0, 0, 0, 1)"> JSONArray.parseArray(jsonArrayStr).toJavaList(clazz);
  34. }
  35. </span><span style="color: rgba(0, 0, 255, 1)">return</span> <span style="color: rgba(0, 0, 255, 1)">null</span><span style="color: rgba(0, 0, 0, 1)">;
  36. }
  37. @Override
  38. </span><span style="color: rgba(0, 0, 255, 1)">public</span> List<T> getNullableResult(CallableStatement cs, <span style="color: rgba(0, 0, 255, 1)">int</span> i) <span style="color: rgba(0, 0, 255, 1)">throws</span><span style="color: rgba(0, 0, 0, 1)"> SQLException {
  39. String jsonArrayStr </span>=<span style="color: rgba(0, 0, 0, 1)"> cs.getString(i);
  40. </span><span style="color: rgba(0, 0, 255, 1)">if</span> (<span style="color: rgba(0, 0, 255, 1)">null</span> !=<span style="color: rgba(0, 0, 0, 1)"> jsonArrayStr) {
  41. </span><span style="color: rgba(0, 0, 255, 1)">return</span><span style="color: rgba(0, 0, 0, 1)"> JSONArray.parseArray(jsonArrayStr).toJavaList(clazz);
  42. }
  43. </span><span style="color: rgba(0, 0, 255, 1)">return</span> <span style="color: rgba(0, 0, 255, 1)">null</span><span style="color: rgba(0, 0, 0, 1)">;
  44. }
  45. }</span>

2、继承ObjectJsonArrayHandler

  1. <span style="color: rgba(0, 128, 0, 1)">/**</span><span style="color: rgba(0, 128, 0, 1)">
  2. * StringJsonArrayHandler
  3. *
  4. * </span><span style="color: rgba(128, 128, 128, 1)">@version</span><span style="color: rgba(0, 128, 0, 1)"> v1.0.0
  5. * @date 2020/8/11
  6. </span><span style="color: rgba(0, 128, 0, 1)">*/</span>
  7. <span style="color: rgba(0, 0, 255, 1)">public</span> <span style="color: rgba(0, 0, 255, 1)">class</span> StringJsonArrayHandler <span style="color: rgba(0, 0, 255, 1)">extends</span> ObjectJsonArrayHandler<String><span style="color: rgba(0, 0, 0, 1)"> {
  8. </span><span style="color: rgba(0, 0, 255, 1)">public</span> StringJsonArrayHandler(Class<String><span style="color: rgba(0, 0, 0, 1)"> clazz) {
  9. </span><span style="color: rgba(0, 0, 255, 1)">super</span>(String.<span style="color: rgba(0, 0, 255, 1)">class</span><span style="color: rgba(0, 0, 0, 1)">);
  10. }
  11. }</span>

 

json存数据库时处理器,jsonHandler/jsonArrayHandler

标签:覆盖   ali   arrays   jdb   str   ring   div   att   resultset   

人气教程排行