记录 :
pg数据库函数:
json_build_object():可将多个字段合并成一个 JSON 对象
例:
转换前:
SELECT json_build_object(nickname,username) FROM system_users
转换后:
json_agg():是一个聚合函数,它返回一个包含了一个分组中的所有的值的组成的 JSON 数组
例:
select json_agg(json_build_object(nickname,username))FROM system_users
结果:[{"姓名" : "xingming"}, {"源码" : "yuanma"}, {"测试号" : "test"}, {"admin" : "admin123"}]
mybaits 处理参数:
@MappedTypes(JSONObject.class)
public class personJsonTypeHandler extends BaseTypeHandler<JSONObject> {
@Override
public void setNonNullParameter(PreparedStatement preparedStatement, int i, JSONObject objects, JdbcType jdbcType) throws SQLException {
}
@Override
public JSONObject getNullableResult(ResultSet resultSet, String columnName) throws SQLException {
// 处理sql返回json进行转换
String sqlJson = resultSet.getString(columnName);
if (!sqlJson.isEmpty()){
return JSONObject.parseObject(sqlJson);
}
return null;
}
@Override
public JSONObject getNullableResult(ResultSet resultSet, int i) throws SQLException {
return null;
}
@Override
public JSONObject getNullableResult(CallableStatement callableStatement, int i) throws SQLException {
return null;
}
}
xml中 sql语句返回结果需用resultMap接收,接收json数据字段需加typeHandler:
<resultMap type="com.xx.xx.xx.vo.PersonCountVo" id="PersonCountVo">
<result property="jsonMap" column="jsonMap" typeHandler="com.xx.xx.xx.personJsonTypeHandler" />
</resultMap>
字段添加注解 :
@TableField(value="jsonData",typeHandler = personJsonTypeHandler.class)