List的流操作结合hutool的最优雅处理,处理前端所需要的参数定制化返回给前端

前言:

java用于服务器端是很方便的,特别是对于前后端分离的项目来说.经常需要对接前端写接口,有时候前端要接口必须得一次性查出来数据,那就得处理从数据库查询到的数据了,下面就是如何更加高效更加优雅的处理数据,这里用到了hutool的方法,这篇文章主要就是让大家如何快速的去处理自定义前端需要的类,把数据快速封装上,并且处理数组字符串.

正文:

1.首先就得需要java.util.List这个包下的List数组

2.List类型有两个比较好用的,第一个就是进行流操作最后再收集回来具体代码看下面这个例子

       LambdaQueryWrapper<Function> wrapper = new LambdaQueryWrapper<>();wrapper.eq(Function::getStatus, 1);wrapper.orderByAsc(Function::getSort);List<Function> list = functionService.list(wrapper);list.stream().map(function -> {function.setPicture(getUrl(function.getPicture()));return function;}).collect(Collectors.toList());

上面的function.setPicture(getUrl(function.getPicture()));中的getUrl()方法就是用来解析原来这个字段存的数组字符串对象,就是字符串是数组的,数组里面是对象,但前端只需要这里面对象的一个url参数,并且对这个参数处理好拼接全路径返回给前端,怎么样还是蛮简单的吧,格式都一样,你只需要更改map方法里面的内容就好了

3.可能通过上面你还是觉得麻烦,是因为这里处理的不多就只有一个字段,下面这里是处理两个字段的看一下代码优雅程度

       LambdaQueryWrapper<Resort> wrapper = new LambdaQueryWrapper<>();wrapper.eq(Resort::getStatus, 1);if ("是".equals(hot)) {wrapper.eq(Resort::getHot, "是");}wrapper.orderByAsc(Resort::getSort);List<Resort> list = resortService.list(wrapper);List<ResortDTO> resortDTOS = BeanUtil.copyToList(list, ResortDTO.class);resortDTOS.stream().map(resortDTO -> {resortDTO.setPicture(getUrl(resortDTO.getPicture()));return resortDTO;}).collect(Collectors.toList());

上面这个操作是直接封装好一个DTO类,这个类只返回给前端他需要的字段,那就可以使用hutool的数组转换,BeanUtil.copyToList(list, ResortDTO.class);很方便前面一个参数就是被转换的数组,后面是需要转换成的数组泛型反射,怎么样,就一行代码直接就转换过去了,而且再加上使用list的流处理,直接就把里面的数组替换掉

4.下面还有一个是使用hutool的类型转换还是使用BeanUtil类型

       Resort byId = resortService.getById(id);ResortDetailsDTO dto = BeanUtil.copyProperties(byId, ResortDetailsDTO.class);dto.setImagesList(getUrlList(byId.getImages()));dto.setPicture(getUrl(byId.getPicture()));

上面这些代码就是直接使用hutool的类型转换,这次不是数组的了,是普通类的转换,然后再加上自定义的类型转换工具类,就能直接转换里面的参数,简直不要太方便

后记:

通过上面的例子是不是感觉list的流好复杂,要是我不去修改list数组里面的数据,我只是获取里面的数据然后封装到新的数组里面去,那岂不是很方便吗看一下我里面用到的getUrl()方法封装的是什么

   public static List<String> getUrlList(String images) {ArrayList<String> urlList = new ArrayList<>();List<PhotoUtilDTO> list = JSONUtil.parseArray(images).toList(PhotoUtilDTO.class);list.forEach(photoUtilDTO -> {urlList.add("http://xxx.xxx.cn" + photoUtilDTO.getUrl());});}

上面的代码里面我只需要从字符串数组获取每个数组中的一个url参数然后进行封装,我并不需要修改原来的list集合,那就不需要用到List的stream().map()方法,咱们只需要使用List的forEach()方法就行,就像上面那样,如果只有一行代码进行处理逻辑的话,我们还能把代码简化成lambda表达式,就像下面这个样子

   public static List<String> getUrlList(String images) {ArrayList<String> urlList = new ArrayList<>();List<PhotoUtilDTO> list = JSONUtil.parseArray(images).toList(PhotoUtilDTO.class);list.forEach(photoUtilDTO -> urlList.add("http://xxx.xx.cn" + photoUtilDTO.getUrl()));return urlList;}

是不是感觉代码很优雅,那我们就可以进行自己的封装了

如果我的博客帮助到了您,您可以到我的博客https://blog.csdn.net/weixin_57228276或者微信公众号搜索幸识SQ,在那里可以找到我,里面也有更多的优秀文章

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

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

相关文章

微信小程序开发教学系列(1)- 开发入门

第一章&#xff1a;微信小程序简介与入门 1.1 简介 微信小程序是一种基于微信平台的应用程序&#xff0c;可以在微信内直接使用&#xff0c;无需下载和安装。它具有小巧、高效、便捷的特点&#xff0c;可以满足用户在微信中获取信息、使用服务的需求。 微信小程序采用前端技…

自定义WEB框架结合Jenkins实现全自动测试

自定义WEB框架结合Jenkins实现全自动测试 allure生成 allure生成 1.allure–纯命令运行 -固定的–稍微记住对应的单词即可。2 安装&#xff0c;2个步骤: 1.下载allure包&#xff0c;然后配置环境变量。 https://github.com/allure-framework/allure2/releases/tag/2.22.4 2.在…

mysql 、sql server 临时表、表变量、

sql server 临时表 、表变量 mysql 临时表 创建临时表 create temporary table 表名 select 字段 [&#xff0c;字段2…&#xff0c;字段n] from 表

leetcode 355 设计推特

用链表存储用户发送的每一个推特&#xff0c;用堆获取最先的10条动态 class Twitter {Map<Integer,Set<Integer>> followMap;//规定最新的放到最后Map<Integer,Tweet> postMap;//优先队列(堆&#xff09;PriorityQueue<Tweet> priorityQueue;int time…

[JavaWeb]【十】web后端开发-SpringBootWeb案例(配置文件)

目录 一、参数配置化 1.1 问题分析 1.2 问题解决&#xff08;application.properties&#xff09; 1.2.1 application.properties 1.2.2 AliOSSUtils 1.2.3 启动服务-测试 二、yml配置文件 2.1 配置格式 2.1.1 新增 application.yml 2.1.2 启动服务 2.2 XML与prope…

LeetCode438.找到字符串中所有字母异位词

因为之前写过一道找字母异位词分组的题&#xff0c;所以这道题做起来还是比较得心应手。我像做之前那道字母异位词分组一样&#xff0c;先把模板p排序&#xff0c;然后拿滑动窗口去s中从头到尾滑动&#xff0c;窗口中的这段字串也给他排序&#xff0c;然后拿这两个排完序的stri…

Python 基础 -- Tutorial(三)

7、输入和输出 有几种方法可以表示程序的输出;数据可以以人类可读的形式打印出来&#xff0c;或者写入文件以备将来使用。本章将讨论其中的一些可能性。 7.1 更花哨的输出格式 到目前为止&#xff0c;我们已经遇到了两种写值的方法:表达式语句和print()函数。(第三种方法是使…

等保测评--安全区域边界--测评方法

安全子类--边界防护 a) 应保证跨越边界的访问和数据流通过边界设备提供的受控接口进行通信&#xff1b; 一、测评对象 网闸、防火墙、路由器、交换机和无线接入网关设备等提供访问控制功能的设备或相关组件 二、测评实施 1)应核查在网络边界处是否部署访问控制设备&#x…

【SA8295P 源码分析】13 - Android GVM 虚拟机 QUPv3 UART / SPI / I2C功能配置及透传配置

【SA8295P 源码分析】13 - Android GVM 虚拟机 QUPv3 UART / SPI / I2C功能配置及透传配置 一、QUP v3 介绍二、QUP v3 UART 功能配置2.1 TrustZone 域 Uart 资源权限配置:以 QUPV3_0_SE2 为例2.2 QNX Host 域关闭 Uart 资源:以 QUPV3_0_SE2 为例2.3 Android Kernel 域使能 U…

GEE/PIE 遥感大数据处理与典型案例

查看原文>>>【399三天】GEE/PIE遥感大数据处理与典型案例实践 随着航空、航天、近地空间等多个遥感平台的不断发展&#xff0c;近年来遥感技术突飞猛进。由此&#xff0c;遥感数据的空间、时间、光谱分辨率不断提高&#xff0c;数据量也大幅增长&#xff0c;使其越来…

数据结构(6)

2-3查找树 2-结点&#xff1a;含有一个键(及其对应的值)和两条链&#xff0c;左链接指向2-3树中的键都小于该结点&#xff0c;右链接指向的2-3树中的键都大于该结点。 3-结点&#xff1a;含有两个键(及其对应的值)和三条链&#xff0c;左链接指向的2-3树中的键都小于该结点&a…

python中的matplotlib画散点图(数据分析与可视化)

python中的matplotlib画散点图&#xff08;数据分析与可视化&#xff09; import numpy as np import pandas as pd import matplotlib.pyplot as pltpd.set_option("max_columns",None) plt.rcParams[font.sans-serif][SimHei] plt.rcParams[axes.unicode_minus]Fa…

我的动态归纳(便于搜索)

linux dns配置文件是“/etc/resolv.conf”&#xff0c;该配置文件用于配置DNS客户&#xff0c;它包含了主机的域名搜索顺序和DNS/服务器的地址&#xff0c;每一行包括一个关键字和一个或多个空格隔开的参数。 /etc/resolv.conf &#xff08;不配置就不能域名解析&#xff09; 可…

完全免费的GPT,最新整理,2023年8月24日,已人工验证,不用注册,不用登录,更不用魔法,点开就能用

完全免费的ChatGPT&#xff0c;最新整理&#xff0c;2023年8月24日&#xff0c;已人工验证&#xff0c; 不用注册&#xff0c;不用登录&#xff0c;更不用魔法&#xff0c;点开就能用&#xff01; 第一个&#xff1a;网址地址统一放在文末啦&#xff01;文末直达 看上图你就能…

Spring Boot+Atomikos进行多数据源的分布式事务管理详解和实例

文章目录 0.前言1.参考文档2.基础介绍3.步骤1. 添加依赖到你的pom.xml文件:2. 配置数据源及其对应的JPA实体管理器和事务管理器:3. Spring BootMyBatis集成Atomikos4. 在application.properties文件中配置数据源和JPA属性&#xff1a; 4.使用示例5.底层原理 0.前言 背景&#x…

YOLO目标检测——足球比赛中球员检测数据集下载分享

足球比赛中球员检测数据集&#xff0c;真实场景的高质量图片数据&#xff0c;数据场景丰富&#xff0c;图片格式为jpg&#xff0c;共500张图片 数据集点击下载&#xff1a;YOLO足球比赛中球员检测数据集500图片.rar

[时序数据库]:InfluxDB进阶

文章目录 1 摘要2 背景2.1 问题一&#xff1a;针对Influx V2.0工具2.2 问题二&#xff1a;针对Influx查询语言 3 需求分析4 快速入门4.1 客户端驱动版本选择4.2 连接influx4.2.1 influx配置信息4.2.2 influx连接配置4.2.3 测试连通情况 5 Influx工具类5.1 InfluxQL工具类5.1.1 …

前端进阶Html+css10----定位的参照对象(高频面试题)

1.relative的参照对象 1&#xff09;元素按照标准流进行排布&#xff1b; 2&#xff09;定位参照对象是元素自己原来的位置&#xff0c;可以通过left、right、top、bottom来进行位置调整&#xff1b; 2.absolute&#xff08;子绝父相&#xff09; 1&#xff09;元素脱离标准流…

校园跑腿小程序开发方案详解

校园跑腿小程序App的功能有哪些&#xff1f; 1、用户注册与登录 用户可以通过手机号、社交账号等方式进行注册和登录&#xff0c;以便使用跑腿服务。 2、下单与发布任务 用户可以发布各类跑腿任务&#xff0c;包括食品外卖、快递代收、文件送达、帮我买、帮我取、帮我送等等…

【Java转Go】快速上手学习笔记(五)之Gorm篇

目录 go get命令1、go get命令无响应问题2、Unresolved dependency错误 连接数据库连接.gomain.go 操作数据库创建表新增数据更新数据删除数据查询数据单表查询多表查询 用到的数据库表原生SQL 完整代码 go往期文章笔记&#xff1a; 【Java转Go】快速上手学习笔记&#xff08;…