首页 > 数据库 >16、SQL操作JSON字段

16、SQL操作JSON字段

时间:2022-12-26 19:00:12浏览次数:65  
标签:uuid 16 list name JSON SQL JsonObjectVO String

Mysql5.7版本以后提供一个原生的Json类型,Json值将不再以字符串的形式存储,而是采用一种允许快速读取文本元素(document elements)的内部二进制(internal binary)格式。

一、Mysql操作Json字段:

参考

1、存储方式:

注:代码以String类型声明

 

2、JSON格式查询:

SELECT t.`properties` ->> '$.cpu' FROM `t_jsondemo` t WHERE t.`properties` ->> '$.type'='ACTIVE1'

 

3、JSON数组格式查询:

SELECT * FROM `t_jsondemo` t WHERE JSON_EXTRACT(t.`properties`, '$[1]')='ACTIVE2'

SELECT * FROM `t_jsondemo` t WHERE JSON_EXTRACT(t.`properties`, '$[1].cpu') = 4

 

 二、JSONobject操作JSON字段:

JSONobject是FastJson提供的对象,在API中是用一个私有的常量map进行封装的,实际就是一个map,只不过 FastJson对其进行了封装,添加了很多方便快捷的属性方法。

1、相关依赖:

<dependency>
    <groupId>com.alibaba</groupId>
    <artifactId>fastjson</artifactId>
    <version>1.2.79</version>
</dependency>

 

2、操作:

2.1、java对象转化成String

2.2、String类型转json对象,取JSON中的KEY

2.3、String对象转化为List类型

2.4、String对象转化为Map类型

public class JSONObjectDemo {

        public static void main(String[] args) {
            //创建对象
            List<JsonObjectVO> list = new ArrayList<>();
            //对象1
            JsonObjectVO vo1 = new JsonObjectVO();
            vo1.setUuid(UUID.randomUUID().toString());
            vo1.setName("1");
            //对象2
            JsonObjectVO vo2 = new JsonObjectVO();
            vo2.setUuid(UUID.randomUUID().toString());
            vo2.setName("2");
            list.add(vo1);
            list.add(vo2);
            ResponseVO responseVO = ResponseVO.builder()
                    .uuid(UUID.randomUUID().toString())
                    .list(list)
                    .build();
            /**
             * 1、java对象转化成String
             * toPrint:{"list":[{"name":"1","uuid":"b73bb9e8-f7a3-4dcf-8d8d-51313c7f5fd7"},{"name":"2","uuid":"ef109d35-cd07-45cd-9b45-791b205c878f"}],"uuid":"dbc3b9c6-2360-4b83-9d15-b88fe7980f27"}
             * */
            String str = JSONObject.toJSONString(responseVO);
            /**
             * 2、String类型转json对象,取JSON中的KEY
             * toPrint:[{"name":"1","uuid":"b73bb9e8-f7a3-4dcf-8d8d-51313c7f5fd7"},{"name":"2","uuid":"ef109d35-cd07-45cd-9b45-791b205c878f"}]
             * */
            Object data = JSONObject.parseObject(str).get("list");
            /**
             * 3、将String对象转化为List类型
             * toPrint:[JsonObjectVO(uuid=aebd390d-f543-4410-9c3a-98f2cb057757, name=1), JsonObjectVO(uuid=d170bb12-7570-47dd-8f2d-9ec2df5573c5, name=2)]
             * */
            List<JsonObjectVO> aList = JSONObject.parseArray(JSONObject.toJSONString(data),JsonObjectVO.class);
            /**
             * 4、将String对象转化为Map类型
             * */
            Map map = JSONObject.parseObject(JSONObject.toJSONString(vo1), Map.class);
            

            System.out.println(str);
            System.out.println(data);
            System.out.println(aList);
            System.out.println(map.get("name"));
        }
    }

注:JSON字段在insert语句中采用String格式 

 

标签:uuid,16,list,name,JSON,SQL,JsonObjectVO,String
From: https://www.cnblogs.com/Iven-L/p/17006506.html

相关文章

  • 【GDOI 2016 】最长公共子串
    DescriptionSolution很明显的,有相交的区间可以合并为一个区间。那么很明显的一个思路就是把S串中的每一个字符所在的块中所有的字符数统计起来,然后设f[i][j]为T串的第i个......
  • 10、sqli-labs(盲注8-10)
    环境sqli-labsless8一、通过判断是单引号闭合http://192.168.1.119/sqli/Less-8/?id=1’--+二、我们查询一下数据库有多少字节http://192.168.1.119/sqli/Less-8/?id=1......
  • 关系型数据库学习手记——初见倾心PostgreSQL、MySQL、SQLite、MongoDB
    一、关系型数据库系统理论知识1.1学习笔记​​数据库系统概念读书笔记-引言​​数据库系统概念读书笔记-关系数据库数据库系统概念读书笔记-数据库发展史(上)数据库系统概念......
  • fastjson提取json返回值(java)
    返回json数据:{"data":{"offset":2,"total":2952,"restTotal":2950,"dataList":[{"ISBN":"9787539197456",......
  • MySQL半一致读实验
    参考资料:https://dev.mysql.com/doc/refman/8.0/en/innodb-transaction-isolation-levels.htmlhttps://www.yisu.com/zixun/262123.html1、实验环境MySQL5.7RC隔离......
  • Python之PyMysql库
    PyMysql库导入PyMysql库:importpymysqlPyMysql连接对象连接数据库,获得一个PyMysql连接对象connconn=pymysql.connect(host=None,port=0,user=None,......
  • SQL解析调研
    概述在做大数据产品时,经常遇到的一个需求,页面上有一个输入框,可以输入SQL语句,然后获得执行结果。如adhoc。注:本文局限于Java语言。调研Druid阿里的Druid,开源作者推广时,称其为......
  • Aorm又进步了,目前已支持MySQL,MSSQL,Postgres,Sqlite3,并且支持子查询
    hi,各位golang的朋友,我很高兴的告诉你们,Aorm又进步了。Aorm是什么Aorm是一个基于go语言的数据库操作库,可以帮助你更方便的进行数据库操作。它最大的特点是支持空值查询和更新......
  • Aorm又进步了,目前已支持MySQL,MSSQL,Postgres,Sqlite3,并且支持子查询
    hi,各位golang的朋友,我很高兴的告诉你们,Aorm又进步了。Aorm是什么Aorm是一个基于go语言的数据库操作库,可以帮助你更方便的进行数据库操作。它最大的特点是支持空值查询......
  • 基于SqlSugar的开发框架循序渐进介绍(24)-- 使用Serialize.Linq对Lambda表达式进行序列
    在上篇随笔《基于SqlSugar的开发框架循序渐进介绍(23)--Winform端管理系统中平滑增加对WebAPI对接的需求 》中介绍了基于一个接口,实现对两种不同接入方式(直接访问数据库实......