mybatis与mysql的Json格式映射-使用JSONObject | codestn - 程序方块
mybatis与mysql的Json格式映射-使用JSONObject
JavaBean类
1 2 3 4 5 6 7 | public class ShareClose { private Integer id; private String tsCode; private JSONObject close; } |
typeHandler
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 | import org.apache.ibatis.type.BaseTypeHandler; import org.apache.ibatis.type.JdbcType; import org.apache.ibatis.type.MappedJdbcTypes; import org.apache.ibatis.type.MappedTypes; import java.sql.CallableStatement; import java.sql.PreparedStatement; import java.sql.ResultSet; import java.sql.SQLException; import com.alibaba.fastjson.JSONObject; import org.springframework.context.annotation.Description; @MappedTypes(JSONObject.class) @MappedJdbcTypes(JdbcType.LONGVARCHAR) public class JsonObjectTypeHandler extends BaseTypeHandler<JSONObject> { /** * 设置非空参数 * @param ps * @param i * @param parameter * @param jdbcType * @throws SQLException */ @Override public void setNonNullParameter(PreparedStatement ps, int i, JSONObject parameter, JdbcType jdbcType) throws SQLException { ps.setString(i, String.valueOf(parameter.toJSONString())); } /** * 根据列名,获取可以为空的结果 * @param rs * @param columnName * @return * @throws SQLException */ @Override public JSONObject getNullableResult(ResultSet rs, String columnName) throws SQLException { String sqlJson = rs.getString(columnName); if (null != sqlJson){ return JSONObject.parseObject(sqlJson); } return null; } /** * 根据列索引,获取可以为空的结果 * @param rs * @param columnIndex * @return * @throws SQLException */ @Override public JSONObject getNullableResult(ResultSet rs, int columnIndex) throws SQLException { String sqlJson = rs.getString(columnIndex); if (null != sqlJson){ return JSONObject.parseObject(sqlJson); } return null; } @Override public JSONObject getNullableResult(CallableStatement cs, int columnIndex) throws SQLException { String sqlJson = cs.getString(columnIndex); if (null != sqlJson){ return JSONObject.parseObject(sqlJson); } return null; } } |
mapper.xml
1 2 3 4 5 6 7 | <resultMap id="ResultMapWithBLOBs" type="com.ms.quanplat.bean.ShareClose"> <constructor> <idArg column="id" javaType="java.lang.Integer" jdbcType="INTEGER" /> <arg column="ts_code" javaType="java.lang.String" jdbcType="VARCHAR" /> <arg column="close" javaType="com.alibaba.fastjson.JSONObject" jdbcType="LONGVARCHAR" typeHandler="com.ms.quanplat.config.handler.JsonObjectTypeHandler"/> </constructor> </resultMap> |
最后不要忘记在配置文件中配置handler的包路径
1 2 | mybatis: type-handlers-package: com.ms.quanplat.config.handler |