mysql8+mybatis-plus 查询json格式数据

news2024/12/23 1:08:53

sql 测试json表

CREATE TABLE `testjson` (
  `id` int NOT NULL AUTO_INCREMENT,
  `json_obj` json DEFAULT NULL,
  `json_arr` json DEFAULT NULL,
  `json_str` varchar(100) DEFAULT NULL,
  PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=2 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci;

INSERT INTO test2.testjson
(id, json_obj, json_arr, json_str)
VALUES(1, '{"age": "1", "sex": "123"}', '[1, 2, 4]', '12');
INSERT INTO test2.testjson
(id, json_obj, json_arr, json_str)
VALUES(2, '{"age": "1", "sex": "123"}', '[1, 2, 4]', '12');
INSERT INTO test2.testjson
(id, json_obj, json_arr, json_str)
VALUES(3, '{"age": "1", "sex": "123"}', '[1, 2, 4]', '12');
INSERT INTO test2.testjson
(id, json_obj, json_arr, json_str)
VALUES(4, '{"age": "1", "sex": "123"}', '[1, 2, 4]', '12');
INSERT INTO test2.testjson
(id, json_obj, json_arr, json_str)
VALUES(5, '{"age": "1", "sex": "123"}', '[1, 2, 4]', '12');

后台springboot 文件pom.xml

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>
    <parent>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-parent</artifactId>
        <version>2.1.6.RELEASE</version>
        <relativePath/> <!-- lookup parent from repository -->
    </parent>
    <groupId>com.example</groupId>
    <artifactId>springboot-test</artifactId>
    <version>0.0.1-SNAPSHOT</version>
    <name>demo</name>
    <description>Demo project for Spring Boot</description>
    <properties>
        <java.version>8</java.version>
    </properties>
    <dependencies>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>
        <dependency>
            <groupId>com.baomidou</groupId>
            <artifactId>mybatis-plus-boot-starter</artifactId>
            <version>3.3.0</version>
        </dependency>
        <dependency>
            <groupId>mysql</groupId>
            <artifactId>mysql-connector-java</artifactId>
            <version>8.0.11</version>
        </dependency>
        <dependency>
            <groupId>org.projectlombok</groupId>
            <artifactId>lombok</artifactId>
        </dependency>
    </dependencies>

    <build>
        <plugins>
            <plugin>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-maven-plugin</artifactId>
            </plugin>
        </plugins>
    </build>

</project>

application.yml

spring:
    dataSource:
        driver-class-name: com.mysql.cj.jdbc.Driver
        password: root
        url: jdbc:mysql://localhost:3307/test2?characterEncoding=utf8&useSSL=false&serverTimezone=UTC&rewriteBatchedStatements=true
        username: root

实体类User.java

import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import com.baomidou.mybatisplus.extension.handlers.JacksonTypeHandler;
import lombok.Data;

import java.io.Serializable;

@Data
@TableName(value = "testjson", autoResultMap=true)
public class User implements Serializable {
    private static final long serialVersionUID = 1L;

    @TableId(value = "id", type = IdType.AUTO)
    private Long id;
    @TableField(typeHandler = JacksonTypeHandler.class)
    private JsonObj jsonObj;
    private String jsonArr;
    private String jsonStr;



}

JsonObj,java

@Data
public class JsonObj {
    private String sex;
    private Integer age;
}

UserMapper.java

@Mapper
public interface UserMapper extends BaseMapper<User> {

    User selectById(Long id);
    User selectByLike(String sex);
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.springboot.mapper.UserMapper">

    <resultMap id="BaseResultMap" type="com.springboot.entity.User">
        <id column="id" property="id"/>
        <result column="json_obj" property="jsonObj"
        typeHandler="com.baomidou.mybatisplus.extension.handlers.JacksonTypeHandler"/>
        <result column="json_arr" property="jsonArr"/>
        <result column="json_str" property="jsonStr"/>
    </resultMap>

    <select id="selectById" resultMap="BaseResultMap">
        select *from testjson where `id`=#{id}
    </select>

    <select id="selectByLike" resultMap="BaseResultMap">
       select * from testjson where json_obj->'$.sex' like '%'+#{sex}'+%'
    </select>

</mapper>
import com.springboot.mapper.UserMapper;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

@RestController
public class TestController {

    @Autowired
    UserMapper userMapper;

   

    @GetMapping("/testJson")
    public String testJson(){
        return "User===:"+userMapper.selectById(1L);
    }
    @GetMapping("/testJsonLike")
    public String testJsonLike(){
        return "User===:"+userMapper.selectByLike("123");
    }
}

备注:常用JSON函数

//插入和更新

JSON_SET和JSON_INSERT区别:set key存在会覆盖value,insert只会插入新的key,value

UPDATE testjson SET json_obj = JSON_SET(json_obj,'$.age','localhost','$.url','www.muscleape.com') WHERE id = 2;

UPDATE testjson SET json_obj = JSON_INSERT(json_obj,'$.url','www.test.com') WHERE id = 3;

//remove元素

UPDATE testjson SET json_obj = json_remove(json_obj, '$.age') WHERE id = 5;

//模糊查询

select * from testjson where json_obj->'$.url' like '%muscleape%'

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/185897.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

API 网关策略二三事

作者暴渊&#xff0c;API7.ai 技术工程师&#xff0c;Apache APISIX Committer。 近些年随着云原生和微服务架构的日趋发展&#xff0c;API 网关以流量入口的角色在技术架构中扮演着越来越重要的作用。API 网关主要负责接收所有请求的流量并进行处理转发至上游服务&#xff0c;…

【数据结构和算法】认识队列,并实现循环队列

上接前文&#xff0c;我们学习了栈的相关知识内容&#xff0c;接下来&#xff0c;来认识一个与栈类似的&#xff0c;另一种特殊的线性表&#xff0c;队列&#xff0c;本文目的是了解并认识队列这一概念&#xff0c;并实现循环队列 目录 一、认识队列 1.队列的概念 2.队列的实…

入门力扣自学笔记232 C++ (题目编号:1669)

1669. 合并两个链表 题目&#xff1a; 给你两个链表 list1 和 list2 &#xff0c;它们包含的元素分别为 n 个和 m 个。 请你将 list1 中下标从 a 到 b 的全部节点都删除&#xff0c;并将list2 接在被删除节点的位置。 下图中蓝色边和节点展示了操作后的结果&#xff1a; 请…

Docker-harbor私有仓库部署与管理

目录 前言 一、Harbor概述 二、Harbor的特性 三、Harbor的构成 四、Harbor构建Docker私有仓库 环境配置 部署Harbor服务 物理机访问server IP 添加项目并填写项目名称 通过127.0.0.1来登陆和推送镜像 其他客户端上传镜像到Harbor 维护管理Harbor 创建Harbor用户 …

JavaWeb_JavaScript

一、简介 JavaScript 是一门跨平台、面向对象的脚本语言&#xff0c;而Java语言也是跨平台的、面向对象的语言&#xff0c;只不过Java是编译语言&#xff0c;是需要编译成字节码文件才能运行的&#xff1b;JavaScript是脚本语言&#xff0c;不需要编译&#xff0c;由浏览器直接…

GPT-3是精神病患者吗?从心理学角度评估大型语言模型

原文链接&#xff1a;https://www.techbeat.net/article-info?id4494 作者&#xff1a;seven_ 20世纪60年代&#xff0c;麻省理工学院人工智能实验室的Joseph Weizenbaum编写了第一个自然语言处理&#xff08;NLP&#xff09;聊天机器人ELIZA[1]&#xff0c;ELIZA通过使用模式…

linux Redis 集群搭建

在单例模式下继续执行&#xff0c;新增文件夹将之前解压后的文件复制到新增的文件夹中修改配置文件&#xff0c;并放入bin中bind 10.88.99.251&#xff08;ip设置&#xff09;protected-mode yes&#xff08;默认yes&#xff0c;开启保护模式&#xff0c;限制为本地访问&#x…

ASEMI整流桥GBU808在选型的过程中需要注意几点

编辑-Z 型号&#xff1a;GBU808 最大重复峰值反向电压&#xff08;VRRM&#xff09;&#xff1a;800V 最大RMS电桥输入电压&#xff08;VRMS&#xff09;&#xff1a;560V 最大直流阻断电压&#xff08;VDC&#xff09;&#xff1a;800V 最大平均正向整流输出电流&#xf…

为2023年做好 IT 安全防御准备

随着网络安全威胁形势的不断演变&#xff0c;安全运营中心 (SOC) 团队在新年伊始花时间审查他们的战略和关键保护措施。 SOC 团队明白&#xff0c;有效的安全性永远不会是一劳永逸的项目。现有的工具和服务需要不断监控和更新&#xff0c;以确保它们能够抵御当前和新出现的威…

测试人员提高业务掌握度的方案

测试人员除了掌握测试相关技术&#xff0c;比如测试流程、测试用例编写思路、自动化脚本的编写、维护之外&#xff0c;还需要对自己所测试的具体业务进行学习和掌握。 只有这样&#xff0c;才能去涉及灰盒、白盒测试&#xff0c;在测试执行过程中&#xff0c;提高自己分析、定位…

17《Protein Actions Principles and Modeling》-《蛋白质作用原理和建模》中文分享

​结合亲和力具有自由能的分子基础理论&#xff1a;在本章中&#xff0c;我们使用K来衡量结合亲和力。我们可以通过结合曲线(binding curves,)来像这样定义一个结合作用力。这样的曲线能给出配体结合的数量与溶液中配体数量的关系。而结合亲和力K也存在关于分子结构以及能量基础…

zabbix6.0配置邮件告警

1、 配置发送邮件服务器&#xff08;管理媒介Email&#xff09; 2、 创建用户用来接收邮件告警&#xff08;管理用户创建用户&#xff09; 用户 报警媒介 权限 3、 设置触发器报警后的动作&#xff08;配置动作触发器动作创建动作&#xff09; 邮件报警是基…

【C++初阶】六、STL---string模拟实现

目录 一、模拟实现接口总览 二、string模拟实现 2.1 构造函数 2.2 析构函数 2.3 拷贝构造函数 2.3.1 传统写法 2.3.2 现代写法 2.4 赋值运算符重载 2.4.1 传统写法 2.4.2 现代写法 2.5 iterator 2.5.1 begin 2.6 Capacity 2.6.1 size 2.6.2 capacity 2.6.2 emp…

Maven的下载安装配置IDEA详细过程

1. 去官网下载好并且放在同一文件夹下面 下载maven安装包&#xff0c;解压即可使用 &#xff08;下载路径&#xff09;http://maven.apache.org/download.cgi 2. maven配置环境变量 MAVEN_HOME D:\IT\Java\apache-maven-3.8.4&#xff1a;这个写你自己放的目录下 进Path新增 %…

推荐系统之召回集读取服务

5.4 召回集读取服务 学习目标 目标 无应用 无 5.4.1 召回集读取服务 添加一个server的目录 会添加推荐中心&#xff0c;召回读取服务&#xff0c;模型排序服务&#xff0c;缓存服务这里先添加一个召回集的结果读取服务recall_service.pyutils.py中装有自己封装的hbase数据库读…

【GD32F427开发板试用】GD32的ISP进行程序烧录

本篇文章来自极术社区与兆易创新组织的GD32F427开发板评测活动&#xff0c;更多开发板试用活动请关注极术社区网站。作者&#xff1a;羁傲不驯ぃ 什么是ISP? ISP是In-System Program的缩写&#xff0c;即在系统编程。通常我们开发使用仿真器来下载和调试程序&#xff0c;当固…

linux下安装elasticsearch

一&#xff1a;安装JDK1&#xff1a;java安装地址最新版&#xff1a;https://www.oracle.com/java/technologies/javase-downloads.html历史版&#xff1a;https://www.oracle.com/java/technologies/oracle-java-archive-downloads.html2&#xff1a;安装java(1)&#xff1a;安…

vue使用echarts画可视化大屏

画出来的页面效果如下&#xff1a; 一、布局 整体使用element-ui的layout布局&#xff0c;即el-rowel-col&#xff0c;便于自适应 二、配置跨域 首先创建个vue.config.js的文件 module.exports {lintOnSave: false,devServer: {proxy: { //配置跨域/: {target: , //填写…

Python——matplotlib绘图可视化知识点整理

无论你工作在什么项目上&#xff0c;IPython都是值得推荐的。利用ipython --pylab&#xff0c;可以进入PyLab模式&#xff0c;已经导入了matplotlib库与相关软件包&#xff08;例如Numpy和Scipy)&#xff0c;额可以直接使用相关库的功能。 本文作为学习过程中对matplotlib一些…

Oracle Blogs上的Flashback文章

Oracle Database und Temporal Validity Temporal Validity和Flashback的区别&#xff1f;两者通常配合使用。 延伸阅读&#xff1a;Oracle 数据库和时间有效性 时间有效性也称为 Flashback Time Travel。 显示不可见的列&#xff1a; set colinvisible on desc <table_…