springboot 查询
ServiceImpl中
getBaseMapper()的使用
public IPage<ProductPageVO> getProductPage(Integer regionOrCityCode, Integer brandId, LocalDate usedDate, Page<ProductPageVO> page) {return getBaseMapper().getProductPage(regionOrCityCode, brandId, usedDate, page);}
optional的使用
//查询产品Optional<ProductManage> optionalProductManage = productManageService.lambdaQuery().eq(BaseEntity::getId, productId).oneOpt();if (optionalProductManage.isEmpty()) {return null;}ProductManage productManage = optionalProductManage.get();
lamdaquery 查询+流操作获取vo
List<CarInfoVO.Insure.Term> terms = insureTermService.lambdaQuery().in(BaseEntity::getId, termIds).orderByDesc(InsureTerm::getSort).list().stream().map(term -> {//对item进行遍历CarInfoVO.Insure.Term termVo = new CarInfoVO.Insure.Term();termVo.setTitle(term.getTitle());termVo.setSketch(term.getSketch());termVo.setDetail(term.getDetails());return termVo;}).collect(Collectors.toList());//聚集元素
流操作之分组
Map<String, List<CarInfoVO.GeneralConfiguration>> subscribeMap =universalConfigureService.lambdaQuery().in(UniversalConfigure::getParentId, subscribes).eq(UniversalConfigure::getStatus, 1).orderByDesc(UniversalConfigure::getSort).list().stream().collect(Collectors.groupingBy(UniversalConfigure::getParentId,//对数据进行分组,指定分组的keyCollectors.mapping(item -> {//组建分组中的valueCarInfoVO.GeneralConfiguration generalConfiguration = new CarInfoVO.GeneralConfiguration();generalConfiguration.setTitle(item.getTitle());generalConfiguration.setSketch(item.getSketch());generalConfiguration.setDetail(item.getDetail());if (StringUtils.isNotBlank(item.getMaterialId())) {Optional<MaterialConfigure> optional =materialConfigureService.lambdaQuery().eq(BaseEntity::getId, item.getMaterialId()).oneOpt();if (!optional.isEmpty()) {generalConfiguration.setIcon(ossUtil.getCacheSignedUrl(optional.get().getUrl()));}}return generalConfiguration;}, Collectors.toList())));
流操作之排序
List<CarInfoVO.Car> cars = carManages.stream().map(carManage -> {CarInfoVO.Car car = new CarInfoVO.Car();car.setCarId(carManage.getId());car.setTitle(carManage.getTitle());car.setStatus(carManage.getStatus());car.setPrice(carManage.getPrice());car.setCreateTime(carManage.getCreateTime());//车辆关系表Map<Integer, List<String>> carRelations = carManageRelationService.lambdaQuery().eq(CarManageRelation::getCarId, carManage.getId()).isNotNull(CarManageRelation::getRelationId).orderByDesc(CarManageRelation::getSort).list().stream().collect(Collectors.groupingBy(CarManageRelation::getType, Collectors.mapping(CarManageRelation::getRelationId, Collectors.toList())));//排期判断Integer integer = 0;List<String> tenancyIds = carRelations.get(1);//查询租期信息if (CollectionUtils.isNotEmpty(tenancyIds)) {//取最小租期Optional<TenancyConfigure> optional = tenancyConfigureService.lambdaQuery().in(BaseEntity::getId, tenancyIds).orderByAsc(TenancyConfigure::getDuration).last("limit 1").oneOpt();if (!optional.isEmpty()) {//结束时间LocalDate endDate = usedDate.plusDays(optional.get().getDuration() * 30);if (usedDate.isAfter(carManage.getStartTime().toLocalDate()) && endDate.isBefore(carManage.getEndTime().toLocalDate())) {//查询有无排期integer = scheduleServerUtil.searchScheduleRequest(carManage.getCarId(), usedDate, endDate, false);}}}car.setSchedule(integer != 0 ? 1 : 0);car.setRegistrationTime(carManage.getRegistrationTime().getYear() + "年" + carManage.getRegistrationTime().getMonthValue() + "月");car.setCarModelTerritory(carManage.getCarModelTerritory());car.setCurrentMileage(carManage.getCurrentMileage());car.setCarNumber(carManage.getCarNumber());Optional<MaterialConfigure> optional = materialConfigureService.lambdaQuery().eq(BaseEntity::getId, carManage.getCarCoverId()).oneOpt();if (!optional.isEmpty()) {car.setDisplay(ossUtil.getCacheSignedUrl(optional.get().getUrl()));}//外观 内饰 空间List<String> pictureRelationIds = new ArrayList<>();pictureRelationIds.addAll(carRelations.get(4));pictureRelationIds.addAll(carRelations.get(5));pictureRelationIds.addAll(carRelations.get(6));if (CollectionUtils.isNotEmpty(pictureRelationIds)) {Map<String, String> collect1 = materialConfigureService.lambdaQuery().in(BaseEntity::getId, pictureRelationIds).list().stream().collect(Collectors.toMap(BaseEntity::getId, MaterialConfigure::getUrl));List<String> collect2 = pictureRelationIds.stream().map(item -> ossUtil.getCacheSignedUrl(collect1.get(item))).collect(Collectors.toList());car.setPictures(collect2);}//自定义配置List<String> customCarConfigIds = carRelations.get(2);if (CollectionUtils.isNotEmpty(customCarConfigIds)) {List<CarInfoVO.Car.CustomCarConfig> collect = carConfigureService.lambdaQuery().in(BaseEntity::getId, customCarConfigIds).orderByDesc(CarConfigure::getSort).list().stream().map(item -> {CarInfoVO.Car.CustomCarConfig customCarConfig = new CarInfoVO.Car.CustomCarConfig();customCarConfig.setTitle(item.getTitle());customCarConfig.setResume(item.getResume());customCarConfig.setDetail(item.getDetails());return customCarConfig;}).collect(Collectors.toList());car.setCustomCarConfigs(collect);}return car;})//排序.sorted(Comparator.comparing(CarInfoVO.Car::getSchedule).reversed().thenComparing(CarInfoVO.Car::getPrice).thenComparing(CarInfoVO.Car::getCreateTime)).collect(Collectors.toList());
流操作之取大小
List<CarManage> carManages = carManageService.lambdaQuery().eq(CarManage::getProductId, productId).eq(CarManage::getStatus, 1).list();Optional<CarManage> min = carManages.stream().min(Comparator.comparing(CarManage::getMarketPrice));if (!min.isEmpty()) {carInfoVO.setGuidePriceMin(min.get().getMarketPrice());}
流操作之过滤出指定字段
//所有产品List<ProductManage> list = productManageService.lambdaQuery().in(ProductManage::getCityCode, allCities).eq(ProductManage::getStatus, 1).le(ProductManage::getStartTime, usedDate).ge(ProductManage::getEndTime, usedDate).list();if (ObjectUtils.isEmpty(list)) {return new ArrayList<>();}//查询产品下是否存在车辆 没有车辆不显示车系List<String> productIds = list.stream().map(BaseEntity::getId).collect(Collectors.toList());
相关文章:
springboot 查询
ServiceImpl中 getBaseMapper()的使用 public IPage<ProductPageVO> getProductPage(Integer regionOrCityCode, Integer brandId, LocalDate usedDate, Page<ProductPageVO> page) {return getBaseMapper().getProductPage(regionOrCityCode, brandId, usedDate, …...
【分布式链路追踪技术】sleuth+zipkin
目录 1.概述 2.搭建演示工程 3.sleuth 4.zipkin 5.插拔式存储 5.1.存储到MySQL中 5.2.用MQ来流量削峰 6.联系作者 1.概述 当采用分布式架构后,一次请求会在多个服务之间流转,组成单次调用链的服务往往都分散在不同的服务器上。这就会带来一个问…...
Windows 源码编译 MariaDB
环境 Win11, vs2022, git, cmake, Bison from GnuWin32, perl, Gnu Diff. 默认都安装好。 perl 看之前博客教程。perl Bison from GnuWin32 默认安装到 C:\GnuWin32 Add C:\GnuWin32\bin to your system PATH after installation. 下载mariadb源码 地址:MariaD…...
【动画视频生成】
转自:机器之心 动画视频生成这几天火了,这次 NUS、字节的新框架不仅效果自然流畅,还在视频保真度方面比其他方法强了一大截。 最近,阿里研究团队构建了一种名为 Animate Anyone 的方法,只需要一张人物照片࿰…...
《Spring Cloud学习笔记:微服务保护Sentinel》
Review 解决了服务拆分之后的服务治理问题:Nacos解决了服务治理问题OpenFeign解决了服务之间的远程调用问题网关与前端进行交互,基于网关的过滤器解决了登录校验的问题 流量控制:避免因为突发流量而导致的服务宕机。 隔离和降级:…...
解密负载均衡:如何平衡系统负载(下)
🤍 前端开发工程师(主业)、技术博主(副业)、已过CET6 🍨 阿珊和她的猫_CSDN个人主页 🕠 牛客高级专题作者、在牛客打造高质量专栏《前端面试必备》 🍚 蓝桥云课签约作者、已在蓝桥云…...
go 源码解读 - sync.Mutex
sync.Mutex mutex简介mutex 方法源码标志位获取锁LocklockSlowUnlock怎么 调度 goroutineruntime 方法 mutex简介 mutex 是 一种实现互斥的同步原语。(go-version 1.21) (还涉及到Go运行时的内部机制)mutex 方法 Lock() 方法用于…...
机器学习系列--R语言随机森林进行生存分析(1)
随机森林(Breiman 2001a)(RF)是一种非参数统计方法,需要没有关于响应的协变关系的分布假设。RF是一种强大的、非线性的技术,通过拟合一组树来稳定预测精度模型估计。随机生存森林(RSF࿰…...
<JavaEE> TCP 的通信机制(四) -- 流量控制 和 拥塞控制
目录 TCP的通信机制的核心特性 五、流量控制 1)什么是“流量控制”? 2)如何做到“流量控制”? 3)“流量控制”的作用 六、拥塞控制 1)什么是“拥塞控制”? 2)如何做到“拥塞…...
智慧监控平台/AI智能视频EasyCVR接口调用编辑通道详细步骤
视频监控TSINGSEE青犀视频平台EasyCVR能在复杂的网络环境中,将分散的各类视频资源进行统一汇聚、整合、集中管理,在视频监控播放上,GB28181视频安防监控汇聚平台可支持1、4、9、16个画面窗口播放,可同时播放多路视频流,…...
Go语言实现KV存储系统:前言
文章目录 前言前提条件持久索引并发总结 前言 你好,我是醉墨居士,最近想做一些存储方面的东西玩玩,我第一时间就想到了能不能自己开发一个保存键值对的存储系统 我找了些资料,准备使用Go语言实现一下,想着有想法咱就…...
代码随想录刷题笔记(DAY1)
前言:因为学校的算法考试让我认识了卡哥,为了下学期冲击大厂实习的理想,我加入了卡哥的算法训练营,从今天开始我每天会更新自己的刷题笔记,与大家一起打卡,一起共勉! Day 1 01. 二分查找 &…...
Linux域名IP映射
本地域名IP映射 在Linux系统中,域名映射可以通过编辑/etc/hosts文件来实现。/etc/hosts文件用于将主机名映射到IP地址,从而实现本地域名解析。它通常被用于在没有DNS服务器的情况下,手动指定特定域名和IP地址的映射关系。 格式:…...
postman使用-03发送请求
文章目录 请求1.新建请求2.选择请求方式3.填写请求URL4.填写请求参数get请求参数在params中填写(填完后在url中会自动显示)post请求参数在body中填写,根据接口文档请求头里面的content-type选择body中的数据类型post请求参数为json-选择raw-选…...
【Spring实战】09 MyBatis Generator
文章目录 1. 依赖2. 配置文件3. 生成代码4. 详细介绍 generatorConfig.xml5. 代码详细总结 Spring MyBatis Generator 是 MyBatis 官方提供的一个强大的工具,它能够基于数据库表结构自动生成 MyBatis 持久层的代码,包括实体类、Mapper 接口和 XML 映射文…...
【自然语言处理】【大模型】 ΨPO:一个理解人类偏好学习的统一理论框架
一个理解人类偏好学习的统一理论框架 《A General Theoretical Paradiam to Understand Learning from Human Preferences》 论文地址:https://arxiv.org/pdf/2310.12036.pdf 相关博客 【自然语言处理】【大模型】 ΨPO:一个理解人类偏好学习的统一理论框…...
计算机网络——传输层(五)
前言: 最重要的网络层我们已经学习完了,下面让我们再往上一层,对网络层的上一层传输层进行一个学习与了解,学习网络层的基本概念和网络层中的TCP协议和UDP协议 目录 编辑一、传输层的概述: 1.传输层: …...
python3处理docx并flask显示
前言: 最近有需求处理docx文件,并讲内容显示到页面,对world进行在线的阅读,这样我这里就使用flaskDocument对docx文件进行处理并显示,下面直接上代码: Document处理: 首先下载Document的库文…...
Python:正则表达式速通,码上上手!
1前言 正则表达式(Regular Expression)是一种用来描述字符串模式的表达式。它是一种强大的文本匹配工具,可以用来搜索、替换和提取符合特定模式的文本。 正则表达式由普通字符(例如字母、数字、符号等)和元字符&#…...
centos7安装nginx并安装部署前端
目录: 一、安装nginx第一种方式(外网)第二种方式(内网) 二、配置前端项目三、Nginx相关命令 好久不用再次使用生疏,这次记录一下 一、安装nginx 第一种方式(外网) 1、下载nginx ng…...
Linux应用开发之网络套接字编程(实例篇)
服务端与客户端单连接 服务端代码 #include <sys/socket.h> #include <sys/types.h> #include <netinet/in.h> #include <stdio.h> #include <stdlib.h> #include <string.h> #include <arpa/inet.h> #include <pthread.h> …...
第19节 Node.js Express 框架
Express 是一个为Node.js设计的web开发框架,它基于nodejs平台。 Express 简介 Express是一个简洁而灵活的node.js Web应用框架, 提供了一系列强大特性帮助你创建各种Web应用,和丰富的HTTP工具。 使用Express可以快速地搭建一个完整功能的网站。 Expre…...
Android Wi-Fi 连接失败日志分析
1. Android wifi 关键日志总结 (1) Wi-Fi 断开 (CTRL-EVENT-DISCONNECTED reason3) 日志相关部分: 06-05 10:48:40.987 943 943 I wpa_supplicant: wlan0: CTRL-EVENT-DISCONNECTED bssid44:9b:c1:57:a8:90 reason3 locally_generated1解析: CTR…...
设计模式和设计原则回顾
设计模式和设计原则回顾 23种设计模式是设计原则的完美体现,设计原则设计原则是设计模式的理论基石, 设计模式 在经典的设计模式分类中(如《设计模式:可复用面向对象软件的基础》一书中),总共有23种设计模式,分为三大类: 一、创建型模式(5种) 1. 单例模式(Sing…...
【Linux】shell脚本忽略错误继续执行
在 shell 脚本中,可以使用 set -e 命令来设置脚本在遇到错误时退出执行。如果你希望脚本忽略错误并继续执行,可以在脚本开头添加 set e 命令来取消该设置。 举例1 #!/bin/bash# 取消 set -e 的设置 set e# 执行命令,并忽略错误 rm somefile…...
ES6从入门到精通:前言
ES6简介 ES6(ECMAScript 2015)是JavaScript语言的重大更新,引入了许多新特性,包括语法糖、新数据类型、模块化支持等,显著提升了开发效率和代码可维护性。 核心知识点概览 变量声明 let 和 const 取代 var…...
基于FPGA的PID算法学习———实现PID比例控制算法
基于FPGA的PID算法学习 前言一、PID算法分析二、PID仿真分析1. PID代码2.PI代码3.P代码4.顶层5.测试文件6.仿真波形 总结 前言 学习内容:参考网站: PID算法控制 PID即:Proportional(比例)、Integral(积分&…...
(二)TensorRT-LLM | 模型导出(v0.20.0rc3)
0. 概述 上一节 对安装和使用有个基本介绍。根据这个 issue 的描述,后续 TensorRT-LLM 团队可能更专注于更新和维护 pytorch backend。但 tensorrt backend 作为先前一直开发的工作,其中包含了大量可以学习的地方。本文主要看看它导出模型的部分&#x…...
鸿蒙中用HarmonyOS SDK应用服务 HarmonyOS5开发一个医院挂号小程序
一、开发准备 环境搭建: 安装DevEco Studio 3.0或更高版本配置HarmonyOS SDK申请开发者账号 项目创建: File > New > Create Project > Application (选择"Empty Ability") 二、核心功能实现 1. 医院科室展示 /…...
跨链模式:多链互操作架构与性能扩展方案
跨链模式:多链互操作架构与性能扩展方案 ——构建下一代区块链互联网的技术基石 一、跨链架构的核心范式演进 1. 分层协议栈:模块化解耦设计 现代跨链系统采用分层协议栈实现灵活扩展(H2Cross架构): 适配层…...
