PGSQL JSONB用法
查询jsonb对象数组是否包含某个元素
data_content @> ‘{“object1”: [“140000000000”]}’
data_content -> ‘object1’ ? ‘140000000000’
sql写法:
SELECT ID
data_content
FROM
data_content_table
WHERE
id = 1076188122667307077
AND data_content ->> 'max' = '200'
AND data_content ->> 'min' = '190'
--AND data_content @> '{"object1": ["140000000000"]}'
AND data_content -> 'object1' ? '140000000000'
AND data_content -> 'object2' ? 'A111111';
--AND data_content @> '{"object2": ["A111111"]}';
mybatis xml写法:
第一种写法:
<if test="req.object1 != null and req.object1 != ''">
and data_content -> 'object1' ?? #{req.object1}
</if>
<if test="req.object2 != null and req.object2 != ''">
and data_content -> 'object2' ?? #{req.object2}
</if>
<if test="req.object3 != null and req.object3 != ''">
and data_content -> 'object3' ?? #{req.object3}
</if>
<if test="req.object4 != null and req.object4 != ''">
and data_content -> 'object4' ?? #{req.object4}
</if>
<if test="req.object5 != null and req.object5 != ''">
and data_content -> 'object5' ?? #{req.object5}
</if>
第二种写法:
<if test="req.object1 != null">
and data_content <![CDATA[@>]]> '{"object1":["${req.object1}"]}'
</if>
<if test="req.object2 != null">
and data_content <![CDATA[@>]]> '{"object2":["${req.object2}"]}'
</if>
<if test="req.object3 != null">
and data_content <![CDATA[@>]]> '{"object3":["${req.object3}"]}'
</if>
<if test="req.object4 != null">
and data_content <![CDATA[@>]]> '{"object4":["${req.object4}"]}'
</if>
<if test="req.object5 != null">
and data_content <![CDATA[@>]]> '{"object5":["${req.object5}"]}'
</if>