读前思考:

  你没想到解决办法?PostgreSQL 数据库本身就支持还是另有解决办法?

使用JOSNB作为字段类型。现在开始,,,,,,,,,,,,,,,,,,

json如下:

  1. "rule":{
  2. "tags": {
  3. "target": "logon"
  4. },
  5. "time": "2019-11-15 10:00:00",
  6. "method": "scheduled",
  7. "source": "backend",
  8. "aliases": [],
  9. "sendType": "tag",
  10. "registrationIds": []
  11. }

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

代码如下:

  1. #####Mybatis#####
  2. <select id="selectPushDataList" resultMap="BaseResultMap" parameterType="com.jpc.JpushData" >
  3. SELECT
  4. <include refid="Base_Column_List" />
  5. FROM
  6. jp_push jpt
  7. <where>
  8. delete_flag=1
  9. and (rule::json->>'sendType')::text = 'tag'
  10. <if test="name != null and name !=''" >
  11. and name =#{name,jdbcType=VARCHAR}
  12. </if>
  13. ORDER BY
  14. create_time ASC
  15. LIMIT ${pageSize} OFFSET ${(currentPage - 1) * pageSize}
  16. </where>
  17. </select>
  18.  
  19. ####PostgreSQL SQL####
  20. SELECT
  21. uuid,create_user,create_time,update_user,update_time,delete_flag,NAME,type,push,rule, STATUS
  22. FROM
  23. jp_push jpt
  24. WHERE
  25. jpt.delete_flag = 1
  26. AND ( jpct.rule :: json ->> 'sendType' ) :: text = 'tag'
  27. AND jpt.NAME = 'testname'
  28. ORDER BY jpt.create_time ASC LIMIT 20 OFFSET 0

结果如下:

再看如下的json串:

--如何获取title,description呢--------

  1. ----------pre- zh en app----------
  2. "pre": {
  3. "zh": {
  4. "app": {
  5. "title": "test",
  6. "description": "test",
  7. "images": [
  8. "https://www.baidu.com/",
  9. "https://www.baidu.com/1"
  10. ]
  11. }
  12. },
  13. "en": {
  14. "app": {
  15. "title": "test",
  16. "description": "test",
  17. "images": [
  18. "https://www.baidu.com/",
  19. "https://www.baidu.com/1"
  20. ]
  21. }
  22. }
  23. ---------------pre zh en web------------------------------------
  24. "pre": {
  25. "zh": {
  26. "web": {
  27. "title": "test",
  28. "description": "test",
  29. "images": [
  30. "https://www.baidu.com/",
  31. "https://www.baidu.com/1"
  32. ]
  33. }
  34. },
  35. "en": {
  36. "web": {
  37. "title": "test",
  38. "description": "test",
  39. "images": [
  40. "https://www.baidu.com/",
  41. "https://www.baidu.com/1"
  42. ]
  43. }
  44. }
  45. }
  1. 如何写sql 把语言和端作为一个变量传进去...
  1. SELECT
  2.     uuid, address,pre,
  3.     pre :: json -> '${lunguage}' -> '${device}' ->> 'title' AS title,
  4.     pre :: json -> '${lunguage}' -> '${device}' ->> 'description' AS description
  5. FROM
  6.   "ban".test j

获取 zh-web不为空的内容:

  1. lunguage zh,device web
  1. SELECT
  2.     uuid,address, pre,
  3.     pre :: json -> '${lunguage}' -> '${device}' ->> 'title' AS title,
  4.     pre :: json -> '${lunguage}' -> '${device}' ->> 'description' AS description
  5. FROM
  6.   "ban".test j where pre :: json -> '${lunguage}' -> '${device}' is not null

获取 zh-web-images数组里面的第一个图片信息不为空的内容:

  1. SELECT
    uuid,address, pre,
  2.     pre :: json -> '${lunguage}' -> '${device}' ->> 'title' AS title,
  3.     pre :: json -> '${lunguage}' -> '${device}' ->> 'description' AS description,
  4. pre :: json -> '${lunguage}' -> '${device}' ->>0::'images' AS images
  5. FROM
     "ban".test j where pre :: json -> '${lunguage}' -> '${device}' is not null

总结:PostgreSQL 本身就支持以json作为sql的查询条件。

Java ->在mybatis和PostgreSQL Json字段作为查询条件的解决方案的更多相关文章

  1. PostgreSQL Json字段作为查询条件案例

    业务扩展字段在数据库中经常会使用json格式的数据来存储,这就涉及到一个头疼的问题,假设要使用扩展字段里的某个值作为查询条件怎么办,原来PostgreSQL本身就支持这种查询方式. 例子:假设业务扩展 ...

  2. mybatis 使用记录(二) 动态拼接查询条件

    2016-12-16 阅读项目代码时,在项目的xml文件中发现如下写法: SELECT student_user_id FROM tbr_student_class WHERE 1=1 <if ...

  3. thinkphp 同一字段不同查询条件实现

    搞定了 另外区间查询还可以支持更多的条件,只要是针对一个字段的条件都可以写到一起,例如:$map['name'] = array(array('like','%a%'), array('like',' ...

  4. Spark SQL解析查询parquet格式Hive表获取分区字段和查询条件

    首先说一下,这里解决的问题应用场景: sparksql处理Hive表数据时,判断加载的是否是分区表,以及分区表的字段有哪些?再进一步限制查询分区表必须指定分区? 这里涉及到两种情况:select SQ ...

  5. 【mysql】mysql5.7支持的json字段查询【mybatis】

    mysql5.7支持的json字段查询 参考:https://www.cnblogs.com/ooo0/p/9309277.html 参考:https://www.cnblogs.com/pfdltu ...

  6. 【mysql】 mybatis实现 主从表 left join 1:n 一对多 分页查询 主表从表都有查询条件 【mybatis】count 统计+JSON查询

    mybatis实现 主从表 left join  1:n 一对多 分页查询   主表从表都有查询条件+count 需求: ======================================= ...

  7. Java更新Oracle的clob类型字段

    Java更新Oracle的clob类型字段 1.查询该clob字段 2.处理该clob字段查询结果 3.更新该clob字段查询结果 1.查询该clob字段 <select id="se ...

  8. SQL性能优化-查询条件与字段分开执行,union代替in与or,存储过程代替union

    PS:概要.背景.结语都是日常“装X”,可以跳过直接看优化历程 环境:SQL Server 2008 R2.阿里云RDS:辅助工具:SQL 审计 概要 一个订单列表分页查询功能,单从SQL性能来讲,从 ...

  9. mybatis&plus系列------Mysql的JSON字段的读取和转换

    mybatis&plus系列------Mysql的JSON字段的读取和转换 一. 背景 在平常的开发中,我们可能会有这样的需求: 业务数据在存储的时候,并不是以mysql中的varchar丶 ...

随机推荐

  1. python程序编译成exe文件

    最近越来越喜欢使用python写工具.使用的时候,发现程序内部成员python安装目录常常不同,如果用bat双击执行,常常需要修改从svn上down下来的bat文件中python.exe的路径.而给策 ...

  2. 子网掩码!如何划分子网掩码,计算IP地址

    作者:chli1806 一.子网掩码的含义和根据子网掩码划分子网一个IP地址必然属于某一个网络,或者叫子网.子网掩码就是用来指定某个IP地址的网络地址的,换一句话说,就是用来划分子网的.例如,一个A类 ...

  3. 网络编程之winInet

    InternetGetConnectedState() 简介: 功能:检索本地系统的网络连接状态. 函数原型:BOOLAPI InternetGetConnectedState(            ...

  4. Ubuntu 终端中文回显乱码

    参考文章 : http://wiki.ubuntu.org.cn/%E4%BF%AE%E6%94%B9locale 所用 Ubuntu的版本 : 猜想是这样的: 1.字符的编码和显示时,所处的环境不是 ...

  5. java与java web数组括号的不同

    由于之前学JAVA SE数组时习惯了数组括号的写法,到了Web这里写了有点不太习惯了,赶快写篇博客加深一下印象哈 一. java和java web中的数组的不同 java: int[] arr = n ...

  6. ESP8266开发之旅 基础篇① 走进ESP8266的世界

    授人以鱼不如授人以渔,目的不是为了教会你具体项目开发,而是学会学习的能力.希望大家分享给你周边需要的朋友或者同学,说不定大神成长之路有博哥的奠基石... QQ技术互动交流群:ESP8266&3 ...

  7. 触摸屏键盘插件Virtual Keyboard 该怎么用 Virtual Keyboard 入门指南

    最近公司有个项目,这个项目的显示器是触摸屏, 所以在一些需要简单输入的input需要加一个触摸屏的软键盘, 我在github上找了很多开源项目,最后选择了Virtual Keyboard, 以下是我自 ...

  8. vscode自定义颜色主题插件并发布

    生成一个新的颜色主题 运行命令 npm install -g yo generator-code yo code 这时默认文件目录已经帮你创建好了 vscode中按下F5可以帮你打开调试,预览创建好的 ...

  9. python-写入文件

    一.写入空文件(覆盖) # coding=UTF-8 filename = 'test_text.txt' with open(filename, 'w') as file_object: file_ ...

  10. JAVA NIO 获取udp数据报的 发送方ip

    程序是通了,但是没法转发,获取不到对方ip.nio中 udp使用的是DatagramChannel ,但是SelectorKey.channel()转化之后的DatagramChannel,调用get ...