午夜剧场伦理_日本一道高清_国产又黄又硬_91黄色网战_女同久久另类69精品国产_妹妹的朋友在线

您的位置:首頁技術(shù)文章
文章詳情頁

Java編寫的實(shí)體返回VO工具

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

好久不見 最近些許有點(diǎn)懶惰 程序員嘛 每個(gè)月總會(huì)有幾天的 你懂得

那最近發(fā)現(xiàn)好的代碼寫出來真的會(huì)讓人有種賞心悅目的存在 相反就會(huì)有一種想掐死寫代碼的那個(gè)人

所以我最近寫了一個(gè)小工具 就是實(shí)體轉(zhuǎn)換VO對(duì)象的一個(gè)小工具 說到這里 如果你的第一反應(yīng)是 Spring的BeanUtils 那說明你肯定也有遇到過跟我一樣的問題

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

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

現(xiàn)在有一個(gè)用戶實(shí)體

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

現(xiàn)在需要返回一個(gè)VO的對(duì)象 即

import lombok.Data;/** * 用戶vo對(duì)象 * @author 是小張啊 * @since 2021-05-06 */@Datapublic class UserVo { /** * 用戶id */ private String id; /** * 用戶名稱(賬號(hào)) */ 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; }}

這樣是沒有問題的 不談性能 這樣做是非常穩(wěn)的

現(xiàn)在有這樣的一個(gè)需求 需要返回一個(gè) List<UserVo> 如果你能想到用 java8的lambda表達(dá)式的去使用Spring的BeanUtils 那也是不錯(cuò)的具體實(shí)現(xiàn)就是

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() {// 初始化數(shù)據(jù)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; }}

這其實(shí)也挺不錯(cuò)的 只是每次都這樣寫 屬實(shí)不美觀 如果能提取公共方法去調(diào)用就太舒服了 所以這個(gè)方法也是根據(jù) BeanUtils去優(yōu)化這個(gè)工具

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 { /** * 將實(shí)體批量轉(zhuǎn)換成 vo對(duì)象 * 注:當(dāng)前只針對(duì) List * * @param source 實(shí)體集合 * @param clazz 需要批量轉(zhuǎn)換成的對(duì)象 * @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 {// 利用反射 創(chuàng)建一個(gè)新的實(shí)例t = clazz.newInstance();BeanUtils.copyProperties(resources, t); } catch (InstantiationException e) {log.info('{}實(shí)例化失敗', clazz); } catch (IllegalAccessException e) {log.info('{}不可訪問', clazz); } return t;}).collect(Collectors.toList()); }}

這樣就很方便 只需要去調(diào)用即可

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() {// 初始化數(shù)據(jù)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 是有局限性的 你必須保證 實(shí)體的字段值和返回的VO字段值是一樣的

代碼寫到最后 其實(shí)就是一個(gè)不斷優(yōu)化的過程 領(lǐng)導(dǎo)來了 不能多說 得繼續(xù)搬磚去了

以上就是Java編寫的實(shí)體返回VO工具的詳細(xì)內(nèi)容,更多關(guān)于Java 實(shí)體返回VO工具的資料請(qǐng)關(guān)注好吧啦網(wǎng)其它相關(guān)文章!

標(biāo)簽: Java
相關(guān)文章:
主站蜘蛛池模板: 无套白嫩进入乌克兰美女 | 四虎音影 | 国产哺乳奶水91在线播放 | 在线视频成人 | 欧美性极品xxxx做受 | 天天干天天舔 | 日韩av综合在线 | 污片在线免费观看 | 999久久| 日韩视频在线观看免费 | 成人性生交大片免费看 | 99re视频| 日韩中文字幕一区二区 | 四虎久久 | 欧美精品18| 亚洲欧美国产毛片在线 | 蜜桃91麻豆精品一二三区 | 一级特黄色 | 白浆视频在线观看 | 日本少妇一区二区 | 日本三日本三级少妇三级66 | 狼性av懂色av禁果av | 韩国精品av| 一区二区视频免费在线观看 | 日本一卡二卡在线 | 欧美性生交xxxxx久久久缅北 | 久久影视一区 | 精品日韩中文字幕 | 成年人视频网址 | 国产视频综合 | 国产又大又黄视频 | 日韩在线视频播放 | 欧美 日韩 精品 | 欧美日韩www | 国产一区二区三区三州 | 午夜视频入口 | 97小视频| 色导航在线 | 久久精品在线观看视频 | 久久av色 | 亚洲国产爱 |