JsonObjectHandler.java 2.1 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374
  1. package com.nuliji.tools.mybatis.handler;
  2. import com.alibaba.fastjson.JSONObject;
  3. import org.apache.ibatis.type.BaseTypeHandler;
  4. import org.apache.ibatis.type.JdbcType;
  5. import org.apache.ibatis.type.MappedJdbcTypes;
  6. import org.apache.ibatis.type.MappedTypes;
  7. import java.sql.*;
  8. /**
  9. * @description 用以mysql中json格式的字段,进行转换的自定义转换器,转换为实体类的JSONObject属性
  10. */
  11. @MappedTypes(JSONObject.class)
  12. @MappedJdbcTypes(value = {JdbcType.LONGVARCHAR, JdbcType.VARCHAR}, includeNullJdbcType = true)
  13. public class JsonObjectHandler extends BaseTypeHandler<JSONObject> {
  14. public JsonObjectHandler(){
  15. }
  16. /**
  17. * 设置非空参数
  18. * @param ps
  19. * @param i
  20. * @param parameter
  21. * @param jdbcType
  22. * @throws SQLException
  23. */
  24. @Override
  25. public void setNonNullParameter(PreparedStatement ps, int i, JSONObject parameter, JdbcType jdbcType) throws SQLException {
  26. ps.setString(i, String.valueOf(parameter.toJSONString()));
  27. }
  28. /**
  29. * 根据列名,获取可以为空的结果
  30. * @param rs
  31. * @param columnName
  32. * @return
  33. * @throws SQLException
  34. */
  35. @Override
  36. public JSONObject getNullableResult(ResultSet rs, String columnName) throws SQLException {
  37. String sqlJson = rs.getString(columnName);
  38. if (null != sqlJson){
  39. return JSONObject.parseObject(sqlJson);
  40. }
  41. return null;
  42. }
  43. /**
  44. * 根据列索引,获取可以为空的结果
  45. * @param rs
  46. * @param columnIndex
  47. * @return
  48. * @throws SQLException
  49. */
  50. @Override
  51. public JSONObject getNullableResult(ResultSet rs, int columnIndex) throws SQLException {
  52. String sqlJson = rs.getString(columnIndex);
  53. if (null != sqlJson){
  54. return JSONObject.parseObject(sqlJson);
  55. }
  56. return null;
  57. }
  58. @Override
  59. public JSONObject getNullableResult(CallableStatement cs, int columnIndex) throws SQLException {
  60. String sqlJson = cs.getString(columnIndex);
  61. if (null != sqlJson){
  62. return JSONObject.parseObject(sqlJson);
  63. }
  64. return null;
  65. }
  66. }