package com.ltkj.common.mybatis; import com.fasterxml.jackson.core.JsonProcessingException; import com.fasterxml.jackson.databind.JsonNode; import com.fasterxml.jackson.databind.ObjectMapper; import org.apache.ibatis.type.BaseTypeHandler; import org.apache.ibatis.type.JdbcType; import java.io.IOException; import java.sql.CallableStatement; import java.sql.PreparedStatement; import java.sql.ResultSet; import java.sql.SQLException; /* */ public class JsonNodeTypeHandler extends BaseTypeHandler { private static final ObjectMapper mapper = new ObjectMapper(); @Override public void setNonNullParameter(PreparedStatement ps, int i, JsonNode parameter, JdbcType jdbcType) throws SQLException { String str = null; try { str = mapper.writeValueAsString(parameter); } catch (JsonProcessingException e) { e.printStackTrace(); str = "{}"; } ps.setString(i, str); } @Override public JsonNode getNullableResult(ResultSet rs, String columnName) throws SQLException { String jsonSource = rs.getString(columnName); if (jsonSource == null) { return null; } try { JsonNode jsonNode = mapper.readTree(jsonSource); return jsonNode; } catch (IOException e) { e.printStackTrace(); } return null; } @Override public JsonNode getNullableResult(ResultSet rs, int columnIndex) throws SQLException { String jsonSource = rs.getString(columnIndex); if (jsonSource == null) { return null; } try { JsonNode jsonNode = mapper.readTree(jsonSource); return jsonNode; } catch (IOException e) { e.printStackTrace(); } return null; } @Override public JsonNode getNullableResult(CallableStatement cs, int columnIndex) throws SQLException { String jsonSource = cs.getString(columnIndex); if (jsonSource == null) { return null; } try { JsonNode jsonNode = mapper.readTree(jsonSource); return jsonNode; } catch (IOException e) { e.printStackTrace(); } return null; } }