当前位置: 首页 > news >正文

无锡网站建设电话稳定免费虚拟主机

无锡网站建设电话,稳定免费虚拟主机,广告 网站举例,怎么写网页文章目录 前言数据库问题背景后端返回实体对象前端 实现后端返回List<Map<String, Object>>前端 前言 在这篇文章&#xff0c;我们保存了数据库的jsonb类型&#xff1a;MyBatis-Plus 实现PostgreSQL数据库jsonb类型的保存与查询 这篇文章介绍了模糊查询json/json…

文章目录

  • 前言
  • 数据库
  • 问题背景
    • 后端返回实体对象
    • 前端
  • 实现
    • 后端返回List<Map<String, Object>>
    • 前端


前言

在这篇文章,我们保存了数据库的jsonb类型:MyBatis-Plus 实现PostgreSQL数据库jsonb类型的保存与查询

这篇文章介绍了模糊查询json/jsonb类型:PostgreSQL 查询json/jsonb是否存在某个片段

在模糊查询json/jsonb之前,我们得拿到正确的json/jsonb片段,比如我们模糊查询好几个连着的键值对,如果我们拿到的键的顺序打乱了,我们想要一次性模糊查询json/jsonb数据就查询不到正确的数据了。

本文接下来将会讲解在MyBatis-Plus中如何实现返回给前端json/jsonb数据的键值对格式和数据库的格式一致。


数据库

这有一组jsonb类型的数据:

在这里插入图片描述

问题背景

后端返回实体对象

  • specialControl为jsonb类型

以下代码实现了数据返回接口,并可模糊查询jsonb类型

@GetMapping
@ResponseBody
public Object get(@RequestParam(value = "id", required = false) String id,@RequestParam(value = "name", required = false) String name,@RequestParam(value = "specialControl", required = false) String specialControl) {MPJQueryWrapper<Strategy> mpjQueryWrapper = new MPJQueryWrapper<>();mpjQueryWrapper.selectAll(Strategy.class).eq(StringUtil.isNotEmpty(id), "t.id", id).like(StringUtil.isNotEmpty(name), "t.name", name).orderByDesc("t.create_time");if (StringUtil.isNotEmpty(specialControl)) {mpjQueryWrapper.like("t.special_control::text", specialControl.replace(":", ": ").replace(",", ", "));}return strategyService.selectJoinList(Strategy.class, mpjQueryWrapper);
}

前端

序列化Json对象并输出

console.log(JSON.stringify(this.form.specialControl))

输出数据如下:

在这里插入图片描述

可以看到,content 内的键值对的顺序被打乱,和数据库的不一致。

实现

后端返回List<Map<String, Object>>

数据库列名为 special_control,前端数据为驼峰格式,需进行别名 special_control as \"specialControl\"

此时数据库的jsonb数据会被序列化返回给前端,所以jsonb的键值对顺序不会被打乱

  • 序列化:把对象转换为字节序列的过程称为对象的序列化
  • 反序列化:把字节序列恢复为对象的过程称为对象的反序列化
@GetMapping
@ResponseBody
public List<Map<String, Object>> get(@RequestParam(value = "id", required = false) String id,@RequestParam(value = "name", required = false) String name,@RequestParam(value = "specialControl", required = false) String specialControl) {MPJQueryWrapper<Strategy> mpjQueryWrapper = new MPJQueryWrapper<>();mpjQueryWrapper.select("t.id as id, t.name as name, t.special_control as \"specialControl\"").eq(StringUtil.isNotEmpty(id), "t.id", id).like(StringUtil.isNotEmpty(name), "t.name", name).orderByDesc("t.create_time");if (StringUtil.isNotEmpty(specialControl)) {mpjQueryWrapper.like("t.special_control::text", specialControl.replace(":", ": ").replace(",", ", "));}return strategyService.listMaps(mpjQueryWrapper);
}

前端

if (this.form.specialControl != null) {// 反序列化this.form.specialControl = JSON.parse(this.form.specialControl)// 序列化并输出console.log(JSON.stringify(this.form.specialControl))
} else {this.form.specialControl = []
}

输出数据如下:

在这里插入图片描述

即使前端JSON.parse()序列化了字节,再通过JSON.stringify()反序列化输出,可以看到顺序不会被打乱,和数据库的一致。

那么我们就可以直接拿到这一串数据和数据库进行模糊查询匹配。

http://www.yayakq.cn/news/641445/

相关文章:

  • 手机网站建设新闻凡客模板wordpress
  • 网上做平面设计的网站意大利新闻
  • 好网站求推荐闲鱼钓鱼链接
  • 网站建设与网页设计教程视频合肥关键词排名技巧
  • 云主机安装多个网站南京网络公司平台
  • 长沙建站模板大全在国外服务器上做网站项目如何赚钱吗
  • 力软敏捷开发框架可以做网站后台佛山网站建设怎么选
  • 江都城乡建设局网站前端asp网站开发
  • 已经注册了域名怎么做简单的网站益阳做网站公司
  • 德州市经济开发区建设局网站注册公司费用多少钱
  • 石柱土家族网站建设成都网站建设cdajcx
  • 网站建设实施方案及预算中山网站改版
  • 做网站 我们的工人怎么写关键词优化的策略有哪些
  • 网站开发数据库动态管理广西排名前十的模板厂
  • 浙江城乡住房建设厅网站首页优秀网页
  • 做网站不需要原件吧wordpress如何添加备案信息
  • photoshop做网站长沙本地推广
  • 站酷网络深圳定制巴士怎么预约
  • 云主机网站的空间在哪小微企业管理软件
  • 什么叫做网站整站网站开发补充合同
  • 网站建设推广的软文开江建设局网站
  • 怎样创建购物网站国外网页设计
  • 长沙网站建设专家视频网站开发的视频放在哪
  • 页面设计站在学员的角度南京百度seo排名优化
  • 安徽建设信息网站网页后端开发需要学什么
  • 网站结构的类型做钓鱼网站查处
  • 做暧暖免费观看网站wordpress房产主题
  • 网站开发 asp.net 还要学什么深圳今天最新招聘信息
  • 网站建设规划案例服务器云平台
  • 网站做排名2015新年温州的高端设计公司