关于json的集合接收和多表关联查询

news2024/11/29 6:32:01

文章目录

  • 一、json的接收与发送
    • 1.postman工具发送格式
    • 2.controller接收处理
  • 二、查询集合数据
    • 1.利用mybatis-plus进行分页处理
  • 三.读取数据配置mapper.xml
  • 输出结果


提示:以下是本篇文章正文内容,下面案例可供参考

一、json的接收与发送

1.postman工具发送格式

在这里插入图片描述

//json样式
{
	"className": "班级名称",
	"classCode": "班级编码",
	"classLevel": 1,
	"OneManySub01": [{
			"classId": "1",
			"name": "姓名1",
			"age": "22",
			"sex": "1"
		},
		{
			"classId": "2",
			"name": "姓名2",
			"age": "23",
			"sex": "0"
		}
	],
	"OneManySub02": [{
			"classId": 1,
			"subjectName": "科目名称",
			"subjectType": "2"
		},
		{
			"classId": 2,
			"subjectName": "科目名称",
			"subjectType": "1"
		}
	]
}

2.controller接收处理

  /**
     * 新增数据
     * @return
     */
    @ApiOperation("新增数据")
    @RequestMapping("/insetOneManyMain")
    public Object insetManyMain(@RequestBody JSONObject json){
        JSONObject object = new JSONObject();
        try {
        /*
           班级名称
         */
            String className = json.getString("className");
         /*
           班级编码
         */
            String classCode = json.getString("classCode");
         /*
           班级级别
         */
            Integer classLevel = json.getInteger("classLevel");
         /*
           默认登录人
         */
            String login="数飞";
        /*
        设置当前新增时间
         */
            SimpleDateFormat time=new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");//修改格式
            Date date = new Date();//new 当前时间
            //解析OneManySub01
            List<OneManySub01> oneManySub01s = json.getJSONArray("OneManySub01").toJavaList(OneManySub01.class);
            //解析OneManySub02
            List<OneManySub02> oneManySub02s = json.getJSONArray("OneManySub02").toJavaList(OneManySub02.class);
            //循环解析数据保存
            OneManySub01 manySub011 = new OneManySub01();
            for (OneManySub01 manySub01 : oneManySub01s) {
                manySub011.setClassId(manySub01.getClassId());
                manySub011.setName(manySub01.getName());
                manySub011.setAge(manySub01.getAge());
                manySub011.setSex(manySub01.getSex());
                tSUserService.insertOneManySub01(manySub011);
            }
            OneManySub02 manySub021 = new OneManySub02();
            for (OneManySub02 manySub02 : oneManySub02s) {
                manySub021.setClassId(manySub02.getClassId());
                manySub021.setSubjectName(manySub02.getSubjectName());
                manySub021.setSubjectType(manySub02.getSubjectType());
                tSUserService.insertOneManySub02(manySub021);
            }
            OneManyMain manyMain = new OneManyMain();
            manyMain.setClassName(className);
            manyMain.setClassCode(classCode);
            manyMain.setClassLevel(classLevel);
            manyMain.setCreAtor(login);
            manyMain.setCreateTime(time.format(date));
            boolean fan=tSUserService.inserOneManyMain(manyMain);
            if (fan){
                object.put("code",200);
                object.put("执行数据量",1);
                object.put("msg","操作成功");
                return object;
            }else {
                object.put("code",0);
                object.put("执行数据量",0);
                object.put("msg","新增失败请稍后再试");
                return object;
            }
        } catch (Exception e) {
            throw new RuntimeException(e);
        }

    }

二、查询集合数据

1.利用mybatis-plus进行分页处理

    /**
     * 条件匹配
     */
    @RequestMapping("/matching")
    public TableDataInfo listmatching(OneManyMain OneManyMain){
        startPage();
        List<OneManyMain> list =  tSUserService.listmatching(OneManyMain);
       return getDataTable(list);
    }

封装类的处理:因为是多表查询所以需要将其他表集合配置里面

在这里插入图片描述

三.读取数据配置mapper.xml

//type 主表就不在说了 id等后面配置resultMap用的
 <resultMap type="com.inspur.crane.platform.domain.OneManyMain" id="OneManyMain">
        <id column="id" property="id"></id>
        <result property="className" column="class_name"/>
        <result property="classCode" column="class_code"/>
        <result property="classLevel" column="class_level"/>
        <result property="creAtor" column="creator"/>
        <result property="createTime" column="create_time"/>
        <result property="modiFor" column="modifor"/>
        <result property="modifyTime" column="modify_time"/>
        <result property="logo" column="logo"/>
        <!--
        进行数据关联
        property="在主表中配置的名称" javaType="List集合" ofType="封装名"
			-->
        <collection property="oneManySub01s" javaType="List" ofType="OneManySub01">
            <id column="id" property="id"></id>
            <result column="class_id" property="classId"></result>
            <result column="name" property="name"></result>
            <result column="age" property="age"></result>
            <result column="sex" property="sex"></result>
        </collection>
        <!--进行数据关联-->
        <collection property="oneManySub02s" javaType="List" ofType="OneManySub02">
            <id column="id" property="id"></id>
            <result column="class_id" property="classId"></result>
            <result column="subject_name" property="subjectName"></result>
            <result column="subject_type" property="subjectType"></result>
        </collection>
    </resultMap>

添加条件以及resultMap

   <select id="listmatching"  resultMap="OneManyMain">
        SELECT *  FROM `one_many_main` man LEFT JOIN one_many_sub_01 sua ON man.class_code=sua.class_id LEFT JOIN one_many_sub_02 sub on sua.class_id=sub.class_id
        <where>
            <if test="className != null "> and class_name = #{className}</if>
        </where>
    </select>

输出结果

{
    "total": 2,
    "rows": [
        {
            "id": 2,
            "className": "一班级",
            "classCode": "1",
            "classLevel": 1,
            "creAtor": "数飞",
            "createTime": "2022-12-13 09:38:41",
            "modiFor": null,
            "modifyTime": null,
            "logo": null,
            "oneManySub01s": [
                {
                    "id": 2,
                    "classId": 1,
                    "name": "张三",
                    "age": 22,
                    "sex": 1
                }
            ],
            "oneManySub02s": [
                {
                    "id": 2,
                    "classId": 1,
                    "subjectName": "专科",
                    "subjectType": 2
                }
            ]
        }
    ],
    "code": 200,
    "msg": "查询成功"
}

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

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

相关文章

selenium之鼠标操作详解

前言 人类频繁的用手操作鼠标和键盘&#xff0c;为了解决这个问题&#xff0c;selenium工具为我们提供了一个类来处理这些事件— Actionchains &#xff0c;该类可以完成鼠标移动&#xff0c;鼠标点击事件、键盘输入、内容菜单交互等交互行为。 1、常见的鼠标操作有&#xff1…

DSPE-Thiol; DSPE-SH; 二硬脂酰磷脂酰乙醇胺改性巯基

名称&#xff1a;DSPE-Thiol DSPE-SH 全称&#xff1a;18:0 PE Thiol 中文名称&#xff1a;二硬脂酰磷脂酰乙醇胺改性巯基 结构式: 外观&#xff1a;白色粉末 溶剂&#xff1a;HCCl3及其他有机溶剂 反应基团&#xff1a;马来酰亚胺&#xff0c;可以跟任何带有马来酰亚胺活…

【计算机毕业设计】html学生管理系统 OA管理系统设计与实现 HTML网页设计结课作业

&#x1f389;精彩专栏推荐 &#x1f4ad;文末获取联系 ✍️ 作者简介: 一个热爱把逻辑思维转变为代码的技术博主 &#x1f482; 作者主页: 【主页——&#x1f680;获取更多优质源码】 &#x1f393; web前端期末大作业&#xff1a; 【&#x1f4da;毕设项目精品实战案例 (10…

[附源码]Nodejs计算机毕业设计基于JAVA语言的宠物寄养管理Express(程序+LW)

该项目含有源码、文档、程序、数据库、配套开发软件、软件安装教程。欢迎交流 项目运行 环境配置&#xff1a; Node.js Vscode Mysql5.7 HBuilderXNavicat11VueExpress。 项目技术&#xff1a; Express框架 Node.js Vue 等等组成&#xff0c;B/S模式 Vscode管理前后端分…

Java基于springboot+vue+elementUI城乡精准扶贫信息管理系统

系统设计的主要意义在于&#xff0c;一方面&#xff0c;对于网站来讲&#xff0c;系统上线后可以带来很大的便利性&#xff0c;精准扶贫网站管理属于非常细致的管理模式&#xff0c;要求数据量大&#xff0c;计算机管理可以提高精确性&#xff0c;更为便利的就是信息的查询&…

短信引导用户关注公众号短信唤起小程序h5跳转公众号引导用户关注

背景 想要短信唤起微信并引导用户关注公众号&#xff0c;经过调研这样是做不了的&#xff0c;但是我们发现可以通过短信唤起小程序&#xff0c;那么我们只需要在小程序中内嵌一个h5&#xff0c;用 h5 来引导跳转公众号就好了。 那么我们拆解一下要做的事情&#xff1a; 短信唤…

数字孪生园区创新实验室落地解决方案

园区实验室管理实质上是对园区、人员、实验试剂耗材、仪器等的整体管理。借助数字孪生技术&#xff0c;实现数字化管理&#xff0c;可以大大提高实验室管理者以及科研人员的工作效率。 数字孪生园区创新实验室落地解决方案 北京智汇云舟科技有限公司成立于2012年&#xff0c;专…

概论_第4章__期望的定义和性质

一. 定义 1. 离散型随机变量的期望 2. 连续型随机变量的期望 定义2&#xff1a;设连续型随机变量 X的概率密度为f(x), 若积分 绝对收敛&#xff0c; 称其为X的数学期望。记为&#xff1a; 注意&#xff1a; 被积函数是&#xff1a; xf(x) 看例题: 几种重要分布的数学期…

Oracle-图形化界面-数据库安装

0、Oracle网址 1、oracle官网 2、Oracle下载地址 3、官网安装教程 1、Oracle数据库简介 Oracle Database&#xff0c;又名Oracle RDBMS&#xff0c;或简称Oracle。是甲骨文公司的一款关系数据库管理系统。它是在数据库领域一直处于领先地位的产品。可以说Oracle数据库系统是…

还在手写接口文档?看Swagger如何助你解放双手去吃鸡

近期又有小伙伴私信辉哥&#xff0c;问辉哥现在的接口文档都是怎么编写的&#xff1f;今天辉哥就给大家聊聊&#xff0c;项目中怎么接入Swagger&#xff0c;实现在线接口文档。来&#xff0c;咱们这就开怼&#xff01; 一. 前言 现在的项目开发很多都会采用前后端分离的模式&…

Linux程序包管理工具

Linux程序包管理工具 1. 程序包 我已经使用 Linux 已经有很长一段时间了&#xff0c;日常中经常会安装或者卸载一些应用&#xff0c;久而久之很多的命令已经让我的记忆能力不容乐观了&#xff0c;所以今天在这里写一点管理程序包管理的博客。一方面&#xff0c;之后可以帮助我…

我在阿里做测试,入职5个月的回顾与总结

初来阿里实习的时候&#xff0c;我对测试人员的职责知之甚少&#xff0c;在校时更是从未接触过测试工作。一头雾水之际&#xff0c;主管说&#xff1a;“做项目吧&#xff0c;在实战中快速成长”。从学生到校招生&#xff0c;我在思维和心态完成了一次真正意义上的转变&#xf…

众享比特董事长严挺出席2022中国计算机大会“元宇宙、Web3.0、NFT:机遇还是泡沫?”技术论坛

12月10日晚&#xff0c;为期三天的2022中国计算机大会&#xff08;2022CNCC&#xff09;成功落下帷幕。众享比特董事长严挺出席“元宇宙、Web3.0、NFT&#xff1a;机遇还是泡沫&#xff1f;”技术论坛并参与专题研讨。 第三行左一为众享比特董事长严挺 中国计算机大会&#xf…

一文教你集成通知系统的多种HMS Core服务,实现数据安全和真实用户验证

1、介绍 Overview 云数据库是AppGallery Connect提供的服务之一&#xff0c;实现云端数据的同步&#xff0c;提供统一的数据模型和丰富的数据管理接口。在保证数据的可用性、可靠性、一致性&#xff0c;以及安全等特性基础上&#xff0c;能够实现数据在客户端和云端之间的无缝…

SpringBoot扩展SpringMVC配置

SpringBoot扩展SpringMVC配置1.继承WebMvcConfigurer接口2.实现一个自己的视图解析器3.其他自定义配置视图跳转Spring Boot通过WebMvcAutoConfiguration来提供一些默认配置&#xff1b;大多数时候使用默认的配置即可满足要求。但有时可能需要做一些个性化定制&#xff0c;此时就…

Nginx 可视化!配置监控一条龙!

nginx-gui这个东西真的要吹一波&#xff0c;太好用了&#xff0c;而且源码公开。对于我这样一个作为Linux菜鸟的Java开发来说&#xff0c;这个可视化配置工具简直是福音&#xff01; 需求 nginx 可视化管理&#xff0c;例如 配置管理 性能监控 日志监控 其他配置 目前已实现…

CIDR格式网络策略值设置方式

CIDR的格式是IP网段/网络ID&#xff0c;斜杠左面的是网络IP段&#xff0c;斜杠右面是网络ID。如果网络用的是IPV4&#xff0c;它最大有效值是32&#xff0c;它的作用本质上是用来表示网络策略所用的子网掩码二进制里的1有多少个&#xff0c;也就是网络ID的位数。 传统的IPV4-t…

策略模式

文章目录策略模板模式1.策略模式的本质2.何时选用策略模式3.优缺点4.策略模式的结构5.实现支付案例支付案例参数不一致问题策略模板模式 1.策略模式的本质 策略模式的本质:分离算法&#xff0c;选择实现。 纵观整个策略模式实现的功能和设计&#xff0c;它的本质还是“分离算法…

会议学习笔记

目录1.标注高效的核心思路&#xff1a;1.部分监督PSL2.自监督SSL魔方复原3.单一标注无标注2.深度通用学习DUL1.通用特征点检测2.通用MRI重建3.学习与知识融合如何把大数据小任务转换成小数据大任务 1.标注高效的核心思路&#xff1a; 以一变二&#xff1a;数据增广无中生有&am…

[附源码]Node.js计算机毕业设计电影院订票管理系统Express

项目运行 环境配置&#xff1a; Node.js最新版 Vscode Mysql5.7 HBuilderXNavicat11Vue。 项目技术&#xff1a; Express框架 Node.js Vue 等等组成&#xff0c;B/S模式 Vscode管理前后端分离等等。 环境需要 1.运行环境&#xff1a;最好是Nodejs最新版&#xff0c;我…