「Java工具类」Apache的Beanutils和PropertyUtils工具类
介紹語(yǔ)
本號(hào)主要是Java常用關(guān)鍵技術(shù)點(diǎn),通用工具類的分享;以及springboot+springcloud+Mybatisplus+druid+mysql+redis+swagger+maven+docker等集成框架的技術(shù)分享;datax、kafka、flink等大數(shù)據(jù)處理框架的技術(shù)分享。文章會(huì)不斷更新,歡迎碼友關(guān)注點(diǎn)贊收藏轉(zhuǎn)發(fā)!
望各位碼友點(diǎn)擊關(guān)注,沖1000粉。后面會(huì)錄制一些視頻教程,圖文和視頻結(jié)合,比如:圖書(shū)介紹網(wǎng)站系統(tǒng)、搶購(gòu)系統(tǒng)、大數(shù)據(jù)中臺(tái)系統(tǒng)等。技術(shù)才是程序猿的最愛(ài),碼友們沖啊
如果碼友覺(jué)得代碼太長(zhǎng),可以從頭到尾快速掃射一遍,了解大概即可。覺(jué)得有用后再轉(zhuǎn)發(fā)收藏,以備不時(shí)之需。
正文:
對(duì)象操作工具類,在項(xiàng)目中用的不是特別多,而且很多時(shí)候是用的JacksonMapper工具類,在我的分享中有JacksonMapper工具類,需要的可以看下,很實(shí)用。今天介紹Apache的Beanutils和PropertyUtils兩個(gè)工具類,這兩個(gè)工具類放在一起是因?yàn)樗麄児δ艽蟛糠质且粯拥摹S腥苏f(shuō)他們性能不怎么樣,我也沒(méi)實(shí)際測(cè)試性能,但只要不是大并發(fā)不會(huì)有問(wèn)題的,我們也不是淘寶網(wǎng)站一樣牛逼,那么講究性能,所以放心的用。
-
Beanutils 顧名思義對(duì)象工具類,屬性賦值、取值、對(duì)象拷貝等;
-
PropertyUtils 顧名思義屬性工具類,對(duì)象操作的是屬性,所以它和Beanutils功能很多類似的,用的時(shí)候能達(dá)到目的就可以,不必糾結(jié)用哪個(gè);
Beanutils使用例子
import com.javabage.tools.entity.Student;import org.apache.commons.beanutils.BeanUtils;?import java.lang.reflect.InvocationTargetException;import java.time.LocalDate;import java.util.HashMap;import java.util.Map;?public class BeanutilsTest {?public static void main(String[] args) throws InvocationTargetException, IllegalAccessException,NoSuchMethodException {Student stu = new Student();?// 設(shè)置對(duì)象屬性BeanUtils.setProperty(stu, "name", "張三");System.out.println(stu);BeanUtils.setProperty(stu, "age", 18);System.out.println(stu);?// 把Map賦值到BeanMap<String, Object> stuMap = new HashMap<>();stuMap.put("name", "李四");stuMap.put("age", 16);stuMap.put("address", "朝陽(yáng)路");stuMap.put("birthday", LocalDate.now());BeanUtils.populate(stu, stuMap);System.out.println(stu);?// 拷貝對(duì)象Student stu2 = new Student();BeanUtils.copyProperties(stu2, stu);System.out.println(stu2);?// 把對(duì)象轉(zhuǎn)為MapMap<String, String> stuDescribe = BeanUtils.describe(stu2);System.out.println(stuDescribe);}}PropertyUtils使用例子
?import com.javabage.tools.entity.Student;import org.apache.commons.beanutils.PropertyUtils;?import java.lang.reflect.InvocationTargetException;import java.time.LocalDate;import java.util.HashMap;import java.util.Map;?public class PropertyUtilsTest {?public static void main(String[] args) throws InvocationTargetException, IllegalAccessException,NoSuchMethodException {Student stu = new Student();?// 設(shè)置對(duì)象屬性PropertyUtils.setProperty(stu, "name", "張三");System.out.println(stu);PropertyUtils.setProperty(stu, "age", 18);System.out.println(stu);?// 把Map賦值到BeanMap<String, Object> stuMap = new HashMap<>();stuMap.put("name", "李四");stuMap.put("age", 16);stuMap.put("address", "朝陽(yáng)路");stuMap.put("birthday", LocalDate.now());PropertyUtils.copyProperties(stu, stuMap);System.out.println(stu);?// 拷貝對(duì)象Student stu2 = new Student();PropertyUtils.copyProperties(stu2, stu);System.out.println(stu2);}} ?import java.io.Serializable;import java.time.LocalDate;?@Data@AllArgsConstructor@NoArgsConstructorpublic class Student implements Serializable {private String name;private int age;private String address;private LocalDate birthday;}工具類源碼:
直接引入工具類的jar包即可
?<dependency><groupId>commons-beanutils</groupId><artifactId>commons-beanutils</artifactId><version>1.9.4</version></dependency>鄙人編碼十年多,在項(xiàng)目中也積累了一些工具類,很多工具類在每個(gè)項(xiàng)目都有在用,很實(shí)用。大部分是鄙人封裝的,有些工具類是同事封裝的,有些工具類已經(jīng)不記得是ctrl+c的還是自己封裝的了,現(xiàn)在有空就會(huì)總結(jié)項(xiàng)目中大部分的工具類,分享給各位碼友。如果文章中涉及的代碼有侵權(quán)行為請(qǐng)通知鄙人處理。
計(jì)劃是先把工具類整理出來(lái),正所謂工欲善其事,必先利其器。項(xiàng)目中不管是普通單體項(xiàng)目還是多模塊maven項(xiàng)目或是分布式微服務(wù),一部分功能模塊都是可以重用的,工具類模塊就是其中之一。
總結(jié)
以上是生活随笔為你收集整理的「Java工具类」Apache的Beanutils和PropertyUtils工具类的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: 魔兽争霸3运行速度慢的一些优化办法。
- 下一篇: Java - BeanUtils.cop