Java屬性嵌套獲取值的實(shí)現(xiàn)方式
Java屬性如何簡(jiǎn)單嵌套獲取值
有時(shí)候我們存在某些類嵌套獲取值的問(wèn)題 A->B->C
public class A{
private B b;
//get and set
}
public class B{
private C c;
//get and set
}
public class C{
private String userName;
//get and set
}
如上面代碼,類存在嵌套,此時(shí)如果想從實(shí)例A對(duì)象中獲取C類中userName的值,就需要一層層去查,并且判空,大致代碼如下:
A a = 實(shí)例化對(duì)象;
if(a != null){
B b = a.getB();
if(b != null){
C c = b.getC();
if(c ! = null){
return c.getUserName();
}
}
}
借助Mybatis MetaObject類獲取值
**maven依賴:**
<dependency>
<groupId>org.mybatis</groupId>
<artifactId>mybatis</artifactId>
<version>3.5.6</version>
</dependency>
import org.apache.ibatis.reflection.DefaultReflectorFactory;
import org.apache.ibatis.reflection.MetaObject;
import org.apache.ibatis.reflection.factory.DefaultObjectFactory;
import org.apache.ibatis.reflection.wrapper.DefaultObjectWrapperFactory;
public class FieldUtil {
/**
* @param object 具體要查詢對(duì)象 例如 A
* @param objectPath 獲取對(duì)應(yīng)的值路徑 “b.c.userName”
* @param clazz 返回的實(shí)體
* @param <T>
* @return
*/
public static <T> T getObjectValue(Object object,String objectPath,Class<T> clazz){
if(object == null){
return null;
}
MetaObject metaObject = MetaObject.forObject(object, new DefaultObjectFactory(),new DefaultObjectWrapperFactory(),new DefaultReflectorFactory());
return (T)metaObject.getValue(objectPath);
}
}
通過(guò)FieldUtil 工具類如果想獲取實(shí)例A(a)中C類的userName屬性直接按如下寫(xiě)即可,
String userName = FieldUtil.getObjectValue(a, “b.c.userName”, String.class);
"b.c.userName"中如果任意一層為空則自動(dòng)返回null,并不會(huì)報(bào)錯(cuò)
總結(jié)
以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。
相關(guān)文章
MyBatis使用CASE WHEN進(jìn)行批量更新的高效寫(xiě)法
當(dāng)我們使用mybatis的時(shí)候,可能經(jīng)常會(huì)碰到一批數(shù)據(jù)的批量更新問(wèn)題,因?yàn)槿绻粭l數(shù)據(jù)一更新,那每一條數(shù)據(jù)就需要涉及到一次數(shù)據(jù)庫(kù)的操作,包括網(wǎng)絡(luò)IO以及磁盤(pán)IO,可想而知,這個(gè)效率是非常低下的,那么今天我們就來(lái)總結(jié)一下,如何使用mybatis做批量更新,需要的朋友可以參考下2025-10-10
簡(jiǎn)單實(shí)現(xiàn)java音樂(lè)播放器
這篇文章主要為大家詳細(xì)介紹了java實(shí)現(xiàn)音樂(lè)播放器的相關(guān)代碼,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2017-06-06
SpringBoot查看項(xiàng)目配置信息的幾種常見(jiàn)方法
這篇文章主要為大家詳細(xì)介紹了查看Spring Boot項(xiàng)目所有配置信息的幾種方法,包括 Actuator端點(diǎn),日志輸出,代碼級(jí)獲取等方式并附帶詳細(xì)步驟和示例,希望對(duì)大家有一定的幫助2025-04-04
java 實(shí)現(xiàn)雙向鏈表實(shí)例詳解
這篇文章主要介紹了java 實(shí)現(xiàn)雙向鏈表實(shí)例詳解的相關(guān)資料,需要的朋友可以參考下2017-03-03
SpringBoot+Vue+Axios+BootStrap實(shí)現(xiàn)圖書(shū)的增刪改查功能示例
本文主要介紹了SpringBoot+Vue+Axios+BootStrap實(shí)現(xiàn)圖書(shū)的增刪改查功能,文中通過(guò)示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2021-12-12
在Spring MVC中處理請(qǐng)求參數(shù)的方法總結(jié)
在Spring MVC中處理請(qǐng)求參數(shù)是通過(guò)使用各種注解來(lái)實(shí)現(xiàn)的,本文給大家介紹了在Spring MVC中處理不同類型請(qǐng)求參數(shù)的方法,并通過(guò)代碼講解的非常詳細(xì),需要的朋友可以參考下2024-08-08
ibatis結(jié)合oracle批量插入三種方法的測(cè)評(píng)
今天小編就為大家分享一篇關(guān)于ibatis結(jié)合oracle批量插入三種方法的測(cè)評(píng),小編覺(jué)得內(nèi)容挺不錯(cuò)的,現(xiàn)在分享給大家,具有很好的參考價(jià)值,需要的朋友一起跟隨小編來(lái)看看吧2018-12-12
mybatis引用其他文件中的sql片段的實(shí)現(xiàn)
Mybatis中也是支持引用其他Mapper文件中的SQL片段的,本文就來(lái)介紹一下如何使用,文中通過(guò)示例代碼介紹的非常詳細(xì),需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2024-03-03

