java postgresql json_在mybatis和PostgreSQL Json字段作为查询条件的解决方案

date:2019-11-15

读前思考:

你没想到解决办法?

postgresql 数据库本身就支持还是另有解决办法?

说明:首先这次数据库使用到json数据类型的原因,这次因为我们在做了一个app 推送的业务,推送的时候,后端给app 推送 好几个字段的内容。 我们这里就直接使用了jsonb数据类型。

使用推送技术:极光推送

现在开始正事了,

如下:

"rule":{

"tags": {

"target": "logon"

},

"time": "2019-11-15 10:00:00",

"method": "scheduled",

"source": "backend",

"aliases": [],

"sendtype": "tag",

"registrationids": []

}

现在我想获取 rule 字段 里面的  sendtype="tag",那现在怎么搞?

代码如下:

#####mybatis#####

select

from

jp_push jpt

delete_flag=1

and (rule::json->>'sendtype')::text = 'tag'

and name =#{name,jdbctype=varchar}

order by

create_time asc

limit ${pagesize} offset ${(currentpage - 1) * pagesize}

####postgresql sql####

select

uuid,

create_user,

create_time,

update_user,

update_time,

delete_flag,

name,

type,

push,

rule,

status

from

jp_push jpt

where

jpt.delete_flag = 1

and ( jpct.rule :: json ->> 'sendtype' ) :: text = 'tag'

and jpt.name = 'testname'

order by

jpt.create_time asc

limit 20 offset 0

结果如下:

fc58f2cfb30aa51bd538d7459b7baa6d.png

如您对本文有疑问或者有任何想说的,请点击进行留言回复,万千网友为您解惑!

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值