PG数据库制造JSON数据并通过mybatis 进行Json参数处理

文章介绍了如何在PostgreSQL中使用json_build_object和json_agg函数操作JSON对象,以及在MyBatis中如何通过personJsonTypeHandler处理返回的JSON数据,包括XML映射文件和字段注解的使用。
摘要由CSDN通过智能技术生成

记录 :

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)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值