国产成人精品久久免费动漫-国产成人精品天堂-国产成人精品区在线观看-国产成人精品日本-a级毛片无码免费真人-a级毛片毛片免费观看久潮喷

您的位置:首頁技術文章
文章詳情頁

Java編寫的實體返回VO工具

瀏覽:4日期:2022-08-12 17:48:01

好久不見 最近些許有點懶惰 程序員嘛 每個月總會有幾天的 你懂得

那最近發現好的代碼寫出來真的會讓人有種賞心悅目的存在 相反就會有一種想掐死寫代碼的那個人

所以我最近寫了一個小工具 就是實體轉換VO對象的一個小工具 說到這里 如果你的第一反應是 Spring的BeanUtils 那說明你肯定也有遇到過跟我一樣的問題

那具體是怎么做? (不考慮性能的情況下) 等下分析

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

現在有一個用戶實體

import lombok.Data;/** * 用戶實體 * * @author 是小張啊 * @since 2021-05-06 */@Datapublic class User { /** * 用戶id */ private String id; /** * 用戶名稱(賬號) */ private String name; /** * 密碼(不加密) */ private String password;}

現在需要返回一個VO的對象 即

import lombok.Data;/** * 用戶vo對象 * @author 是小張啊 * @since 2021-05-06 */@Datapublic class UserVo { /** * 用戶id */ 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;/** * @author 是小張啊 * @since 2021-05-06 */@RestControllerpublic class UserController { /** * 查詢用戶 * @return */ @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;/** * @author 是小張啊 * @since 2021-05-06 */@RestControllerpublic class UserController { /** * 查詢用戶 * @return */ 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;/** * Bean 工具類 * @author 是小張啊 * @since 2021-05-06 */@Slf4jpublic class Utils extends BeanUtils { /** * 將實體批量轉換成 vo對象 * 注:當前只針對 List * * @param source 實體集合 * @param clazz 需要批量轉換成的對象 * @param <T> * @param <S> * @return */ @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;/** * @author 是小張啊 * @since 2021-05-06 */@RestControllerpublic class UserController { /** * 查詢用戶 * @return */ 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工具的資料請關注好吧啦網其它相關文章!

標簽: Java
相關文章:
主站蜘蛛池模板: 免费萌白酱国产一区二区三区 | 欧美成人观看免费版 | 日本老熟妇激情毛片 | 国产一区二区在免费观看 | 欧美一级va在线视频免费播放 | 日本三级韩国三级在线观看a级 | 久久国产三级 | 国产在线精品观看 | 女人国产香蕉久久精品 | 欧美精品久久天天躁 | 欧美一区=区三区 | 久久精品国产99国产 | 成年人网站免费看 | 欧美一级性视频 | 手机免费毛片 | 日韩一级影院 | 噜噜噜狠狠夜夜躁精品 | 精品久久久久久久九九九精品 | 国产一级做a爰片久久毛片99 | 中文字幕成人 | 日日a.v拍夜夜添久久免费 | 又黄又湿又爽 | 免费观看成年人视频 | 亚洲欧美日本韩国综合在线观看 | 18videosex性欧美69 | 亚洲美女视频一区二区三区 | 性做久久久久久久免费看 | 在线视频一二三区 | 国亚洲欧美日韩精品 | 精品久久久日韩精品成人 | 色一欲一性一乱一区二区三区 | 国产精品久久久久久影院 | 色播亚洲精品网站 亚洲第一 | 日韩人成| 国产激情一区二区三区在线观看 | 美女张开腿让我桶 | 国产一区在线观看免费 | 亚洲高清一区二区三区久久 | 又黄又www | 色18美女社区 | 欧美a大片 |