iis服务器助手广告广告
返回顶部
首页 > 资讯 > 后端开发 > Python >Java编写的实体返回VO工具
  • 869
分享到

Java编写的实体返回VO工具

2024-04-02 19:04:59 869人浏览 独家记忆

Python 官方文档:入门教程 => 点击学习

摘要

好久不见 最近些许有点懒惰 程序员嘛 每个月总会有几天的 你懂得 那最近发现好的代码写出来真的会让人有种赏心悦目的存在 相反就会有一种想掐死写代码的那个人 所以我最近写了一个小工具

好久不见 最近些许有点懒惰 程序员嘛 每个月总会有几天的 你懂得

那最近发现好的代码写出来真的会让人有种赏心悦目的存在 相反就会有一种想掐死写代码的那个人

所以我最近写了一个小工具 就是实体转换VO对象的一个小工具 说到这里 如果你的第一反应是 spring的BeanUtils 那说明你肯定也有遇到过跟我一样的问题

那具体是怎么做? (不考虑性能的情况下) 等下分析

先看下如果正常返回VO我们需要怎么去操作?

现在有一个用户实体


import lombok.Data;


@Data
public class User {
    
    private String id;

    
    private String name;

    
    private String passWord;
}

现在需要返回一个VO的对象 即


import lombok.Data;


@Data
public class UserVo {
    
    private String id;

    
    private String name;
}

可以这样处理


import org.springframework.beans.BeanUtils;
import org.springframework.WEB.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;


@RestController
public class UserController {

    
    @GetMapping("/select")
    public UserVo select() {
        User user = new User();
        user.setId(1);
        user.setName("是小张啊");
        UserVo userVo = new UserVo();
        BeanUtils.copyProperties(user, userVo);
        return userVo;
    }
}

这样是没有问题的 不谈性能 这样做是非常稳的

现在有这样的一个需求 需要返回一个 List<UserVo> 如果你能想到用 java8的lambda表达式的去使用Spring的BeanUtils 那也是不错的
具体实现就是


import org.springframework.beans.BeanUtils;
import org.springframework.web.bind.annotation.RestController;

import java.util.ArrayList;
import java.util.List;
import java.util.stream.Collectors;


@RestController
public class UserController {

    
    public List<UserVo> select() {
        // 初始化数据
        User user1 = new User();
        user1.setId(1);
        user1.setName("是小张啊");
        User user2 = new User();
        user2.setId(1);
        user2.setName("是小张啊");
        List<User> users = new ArrayList<>();
        users.add(user1);
        users.add(user2);

        // List<entity> -> List<vo>
        List<UserVo> userVos = users.stream().map(user -> {
            UserVo userVo = new UserVo();
            BeanUtils.copyProperties(user, userVo);
            return userVo;
        }).collect(Collectors.toList());
        return userVos;
    }

}

这其实也挺不错的 只是每次都这样写 属实不美观 如果能提取公共方法去调用就太舒服了 所以这个方法也是根据 BeanUtils去优化这个工具


import lombok.SneakyThrows;
import lombok.extern.slf4j.Slf4j;

import java.util.ArrayList;
import java.util.List;
import java.util.stream.Collectors;


@Slf4j
public class Utils extends BeanUtils {
   
    
    @SneakyThrows
    public static <T, S> List<T> conversionVo(List<S> source, Class<T> clazz) {
        return source.stream().map(resources -> {
            T t = null;
            try {
                // 利用反射 创建一个新的实例
                t = clazz.newInstance();
                BeanUtils.copyProperties(resources, t);
            } catch (InstantiationException e) {
                log.info("{}实例化失败", clazz);
            } catch (IllegalAccessException e) {
                log.info("{}不可访问", clazz);
            }
            return t;
        }).collect(Collectors.toList());
    }
}

这样就很方便 只需要去调用即可


import top.lzmvlog.common.Utils;
import org.springframework.web.bind.annotation.RestController;

import java.util.ArrayList;
import java.util.List;


@RestController
public class UserController {

    
    public List<UserVo> select() {
        // 初始化数据
        User user1 = new User();
        user1.setId(1);
        user1.setName("是小张啊");
        User user2 = new User();
        user2.setId(1);
        user2.setName("是小张啊");
        List<User> users = new ArrayList<>();
        users.add(user1);
        users.add(user2);
        List<UserVo> userVos = Utils.conversionVo(users, UserVo.class);
        return userVos;
    }

}

BeanUtils 是有局限性的 你必须保证 实体的字段值和返回的VO字段值是一样的

代码写到最后 其实就是一个不断优化的过程 领导来了 不能多说 得继续搬砖去了

以上就是Java编写的实体返回VO工具的详细内容,更多关于Java 实体返回VO工具的资料请关注编程网其它相关文章!

--结束END--

本文标题: Java编写的实体返回VO工具

本文链接: https://www.lsjlt.com/news/125790.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • Java编写的实体返回VO工具
    好久不见 最近些许有点懒惰 程序员嘛 每个月总会有几天的 你懂得 那最近发现好的代码写出来真的会让人有种赏心悦目的存在 相反就会有一种想掐死写代码的那个人 所以我最近写了一个小工具 ...
    99+
    2024-04-02
  • Java工具类实现高效编写报表
    目录为什么使用java代码写报表遇到的问题工具类CollectionDataStream如何使用MyCollectors组合使用的实现优势本文中的工具类和demo的代码仓库 为什么使...
    99+
    2022-11-21
    Java工具类写报表 Java写报表
  • 关于Java日期工具类的编写
    目录Java日期工具类编写JavaCalendar日历类的时间操作日期工具类Java日期工具类编写 将字符串转换为对应日期 Date date = simpleDateFormat....
    99+
    2023-05-18
    Java 日期 Java工具类 Java日期工具类
  • Java如何编写超时工具类
    这篇文章主要介绍Java如何编写超时工具类,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!Java的优点是什么1. 简单,只需理解基本的概念,就可以编写适合于各种情况的应用程序;2. 面向对象;3. 分布性,Java是...
    99+
    2023-06-14
  • SpringBoot 返回Json实体类属性大小写的解决
    目录返回Json实体类属性大小写问题Json转换大小写的坑返回Json实体类属性大小写问题 总归上述问题Rt,其实今天开发刚遇到,当时找了半天为啥前台传参后台却接收不到,原来是返回的...
    99+
    2024-04-02
  • 编写javascript的工具有哪些
    编写javascript的工具有哪些,针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。javascript的编写工具有:Sublime Tex...
    99+
    2024-04-02
  • Java Socket服务端具体命令怎么编写
    Java Socket服务端具体命令怎么编写,相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。Java Socket服务端一直在不断发展,我们在使用的时候需要不断的进行客户端的维护...
    99+
    2023-06-17
  • 怎么使用Java工具类实现高效编写报表
    本篇内容主要讲解“怎么使用Java工具类实现高效编写报表”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“怎么使用Java工具类实现高效编写报表”吧!为什么使用java代码写报表对于报表数据大部分情...
    99+
    2023-07-04
  • 如何编写ajax的responseXML返回接受asp
    这篇文章主要介绍“如何编写ajax的responseXML返回接受asp”,在日常操作中,相信很多人在如何编写ajax的responseXML返回接受asp问题上存在疑惑,小编查阅了各式资料,整理出简单好用...
    99+
    2024-04-02
  • PHP 函数返回值的具体类型有哪些?
    php 函数返回值类型分为:1. 基本数据类型(int、float、bool、string、null);2. 特殊类型(void、mixed);3. 内置和自定义类;4. 复合数据类型(...
    99+
    2024-04-16
    php 返回值类型 键值对
  • Java计时器工具StopWatch的具体使用
    目录前言Spring StopWatch实践例子源码分析lang3 StopWatch总结前言 平常,我们想要统计某一段代码块,或某一个方法的执行时间,最简单的是采用如下的方式。 ...
    99+
    2024-04-02
  • java实现后台返回base64图形编码
    目录java后台返回base64图形编码工具类使用方法后端返回base64验证码,解析不出来java后台返回base64图形编码 工具类 package com.liginfo.ap...
    99+
    2024-04-02
  • Java性能工具JMeter实现上传与下载脚本编写
    目录一、前言二、预备知识1、构造方法2、创建功能3、重命名和删除功能4、获取功能三、Java 实现文件上传下载功能1、服务下载代码2、前端代码3、运行效果四、JMeter 文件上传与...
    99+
    2024-04-02
  • Python编程编写完善的命令行工具
    目录1. python-fire2. mando最后的话1. python-fire python-fire 是一个三方库,可以将任何 Python 对象变成一个命令行接口。 使用前...
    99+
    2024-04-02
  • Java工作队列的具体用法
    这篇文章主要介绍“Java工作队列的具体用法”,在日常操作中,相信很多人在Java工作队列的具体用法问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”Java工作队列的具体用法”的疑惑有所帮助!接下来,请跟着小编...
    99+
    2023-05-30
    java
  • 使用Java编写一个图片word互转工具
    目录前言实现方法使用前言 前段时间一直使用到word文档转pdf或者pdf转word,寻思着用Java应该是可以实现的,于是花了点时间写了个文件转换工具 源码weloe/FileCo...
    99+
    2023-01-10
    图片word互转工具 PDF Word文件转换工具 java图片word互转
  • Python编写的Linux邮件发送工具
    之前有用过Linux自带的mail工具来定时发送邮件,但是要装mailx还有配mail.rc,这还比较正常,关键是到了ubantu下这工具用起来真是操蛋,如果哪天其他的unix like操作系统也有需求,那就太麻烦了,所以我用自带的pyt...
    99+
    2023-01-31
    邮件发送 工具 Python
  • typescript返回值类型和参数类型的具体使用
    目录返回值类型可缺省和可推断的返回值类型Generator 函数的返回值参数类型可选参数和默认参数剩余参数返回值类型 在 JavaScript 中,我们知道一个函数可以没有显式 re...
    99+
    2024-04-02
  • Django 事务回滚的具体实现
    目录一、事务的四大特性二、数据库事务2.1使用装饰器(整体回滚,不处理异常)2.2使用with语句(部分回滚,不处理异常)2.3使用with语句(部分回滚,可以处理异常)2.4使用保...
    99+
    2023-02-20
    Django 事务回滚
  • 使用Go语言编写的文件编辑工具
    用Golang编写的文件修改程序 近年来,Golang作为一种高效、简洁的编程语言,备受开发者的青睐。其强大的并发能力和易于学习的特点,使得它成为许多开发人员的首选之一。在日常开发中,...
    99+
    2024-02-26
    文件 golang 修改 go语言 标准库
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作