电脑知识|欧美黑人一区二区三区|软件|欧美黑人一级爽快片淫片高清|系统|欧美黑人狂野猛交老妇|数据库|服务器|编程开发|网络运营|知识问答|技术教程文章 - 好吧啦网

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

Java編寫的實體返回VO工具

瀏覽:2日期: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
相關文章:
主站蜘蛛池模板: 南京交通事故律师-专打交通事故的南京律师 | 国产频谱分析仪-国产网络分析仪-上海坚融实业有限公司 | 陶瓷加热器,履带式加热器-吴江市兴达电热设备厂 | 上海质量认证办理中心 | 北京浩云律师事务所-法律顾问_企业法务_律师顾问_公司顾问 | 杭州月嫂技术培训服务公司-催乳师培训中心报名费用-产后康复师培训机构-杭州优贝姆健康管理有限公司 | 曙光腾达官网-天津脚手架租赁-木板架出租-移动门式脚手架租赁「免费搭设」 | 球磨机 选矿球磨机 棒磨机 浮选机 分级机 选矿设备厂家 | 精密模具制造,注塑加工,吹塑和吹瓶加工,EPS泡沫包装生产 - 济南兴田塑胶有限公司 | 三效蒸发器_多效蒸发器价格_四效三效蒸发器厂家-青岛康景辉 | 医学模型生产厂家-显微手术模拟训练器-仿真手术模拟训练系统-北京医教科技 | 黑龙江「京科脑康」医院-哈尔滨失眠医院_哈尔滨治疗抑郁症医院_哈尔滨精神心理医院 | TPE_TPE热塑性弹性体_TPE原料价格_TPE材料厂家-惠州市中塑王塑胶制品公司- 中塑王塑胶制品有限公司 | 变色龙云 - 打包app_原生app_在线制作平台_短链接_ip查询 | 电动垃圾车,垃圾清运车-江苏速利达机车有限公司 | 高温链条油|高温润滑脂|轴承润滑脂|机器人保养用油|干膜润滑剂-东莞卓越化学 | 除尘布袋_液体过滤袋_针刺毡滤料-杭州辉龙过滤技术有限公司 | 中药二氧化硫测定仪,食品二氧化硫测定仪|俊腾百科 | 智慧旅游_智慧景区_微景通-智慧旅游景区解决方案提供商 | 考试试题_试卷及答案_诗词单词成语 - 优易学 | 温控器生产厂家-提供温度开关/热保护器定制与批发-惠州市华恺威电子科技有限公司 | 切铝机-数控切割机-型材切割机-铝型材切割机-【昆山邓氏精密机械有限公司】 | 济南侦探调查-济南调查取证-山东私家侦探-山东白豹调查咨询公司 密集架|电动密集架|移动密集架|黑龙江档案密集架-大量现货厂家销售 | 宝元数控系统|对刀仪厂家|东莞机器人控制系统|东莞安川伺服-【鑫天驰智能科技】 | 今日热点_实时热点_奇闻异事_趣闻趣事_灵异事件 - 奇闻事件 | 色油机-色母机-失重|称重式混料机-称重机-米重机-拌料机-[东莞同锐机械]精密计量科技制造商 | 阻燃剂-氢氧化镁-氢氧化铝-沥青阻燃剂-合肥皖燃新材料 | 长沙印刷厂-包装印刷-画册印刷厂家-湖南省日大彩色印务有限公司 青州搬家公司电话_青州搬家公司哪家好「鸿喜」青州搬家 | 有机肥设备生产制造厂家,BB掺混肥搅拌机、复合肥设备生产线,有机肥料全部加工设备多少钱,对辊挤压造粒机,有机肥造粒设备 -- 郑州程翔重工机械有限公司 | 闭端端子|弹簧螺式接线头|防水接线头|插线式接线头|端子台|电源线扣+护线套|印刷电路板型端子台|金笔电子代理商-上海拓胜电气有限公司 | 干式磁选机_湿式磁选机_粉体除铁器-潍坊国铭矿山设备有限公司 | 红立方品牌应急包/急救包加盟,小成本好项目代理_应急/消防/户外用品加盟_应急好项目加盟_新奇特项目招商 - 中红方宁(北京) 供应链有限公司 | 承插管件_不锈钢承插管件_锻钢高压管件-温州科正阀门管件有限公司 | 换链神器官网-友情链接交换、购买交易于一体的站长平台 | 防水套管|柔性防水套管|伸缩器|伸缩接头|传力接头-河南伟创管道 防水套管_柔性防水套管_刚性防水套管-巩义市润达管道设备制造有限公司 | 胶泥瓷砖胶,轻质粉刷石膏,嵌缝石膏厂家,腻子粉批发,永康家德兴,永康市家德兴建材厂 | 折弯机-刨槽机-数控折弯机-数控刨槽机-数控折弯机厂家-深圳豐科机械有限公司 | 冷库安装厂家_杭州冷库_保鲜库建设-浙江克冷制冷设备有限公司 | 小威小说网 - 新小威小说网 - 小威小说网小说搜索引擎 | 欧美日韩国产一区二区三区不_久久久久国产精品无码不卡_亚洲欧洲美洲无码精品AV_精品一区美女视频_日韩黄色性爱一级视频_日本五十路人妻斩_国产99视频免费精品是看4_亚洲中文字幕无码一二三四区_国产小萍萍挤奶喷奶水_亚洲另类精品无码在线一区 | 全自动翻转振荡器-浸出式水平振荡器厂家-土壤干燥箱价格-常州普天仪器 |