欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

MyBatis 如何獲取子類的屬性

 更新時(shí)間:2021年08月25日 10:46:54   作者:火鍋技術(shù)棧  
這篇文章主要介紹了MyBatis 如何獲取子類的屬性,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教

MyBatis 獲取子類的屬性

這里有個(gè)model類:

基類

public class user {  
    public int getId() {
        return id;
    } 
 
    public void setId(int id) {
        this.id = id;
    } 
 
    private  int id;  
}

子類

public class vipUser extends user {
    public int getVip() {
        return vip;
    } 
 
    public void setVip(int vip) {
        this.vip = vip;
    } 
 
    private  int vip;
}

Dao 層方法參數(shù)為父類

Selet(user user)

Mapper.xml 參數(shù)也為父類

parameterType='user'
<if test="vip!=null">vipE=#{vip,jdbcType=int},</if>

這里可以獲取子類的屬性 vip;

Java 代碼實(shí)現(xiàn)父類獲取子類的所有屬性

void testuser(user user) throws IllegalAccessException {
Class clas= user.getClass();
/**
         * 返回一個(gè) Field 對(duì)象,該對(duì)象反映此 Class 對(duì)象所表示的類或接口的指定已聲明字段(包括私有成員
         */
             Field[] fields = clas.getDeclaredFields();
             for (Field f : fields) {
             /**
             * 取消默認(rèn) Java 語(yǔ)言訪問控制檢查的能力
             */
            f.setAccessible(true);
            System.out.println("屬性名"+f.toString());  
            System.out.println("屬性值:"+f.getInt(user));  
        }
//            System.out.println(user.getClass().getName());  
    }

父類與子類的屬性,方法問題

1.子類繼承父類不可以繼承父類的私有屬性

以及不可以覆蓋父類的私有方法

2.子類不可以直接訪問父類的私有屬性,方法

類似 super.屬性名/super.方法名。但可以間接訪問

3.如果子類不曾覆蓋父類的方法

則訪問調(diào)用父類的方法等同于 super.方法名。在此方法中訪問與子類相同的屬性,實(shí)際上是訪問父類的屬性。----打破父類私有屬性子類不可以訪問。

同樣的如果相同屬性只有父類提供了get方法,子類未提供。則返回的是父類的屬性值。

4.如果在父類的方法采用反射機(jī)制

則調(diào)用的屬性一定是屬于子類的同名屬性,當(dāng)然也可以訪問父類的屬性。

public class Parent {
private String name = "5";
public String getInfo(){
        System.out.println(this); 
        return this.name;
}
public void get(){ 
    System.out.println(this); 
    Class aClass = this.getClass(); 
    //返回所有this對(duì)象的屬性這里是Children1的屬性,不包含繼承的字段 
    Field[] fields = aClass.getDeclaredFields(); 
    //返回父類的屬性,不包含繼承的字段 
    //aClass.getSuperclass().getDeclaredFields(); 
    //返回此類的所有字段,包含繼承的可訪問的字段 
    //aClass.getFields(); 
    for (Field field : fields) { 
    try { 
            System.out.println(field.get(this).toString()); 
    } catch (IllegalAccessException e) {
        e.printStackTrace();
    } 
    }
} 
public Parent(){ 
} 
public void print(){
    System.out.println("I am Parent!!!"); 
}
} 
public class Children1 extends Parent{ 
public String name = "6"; 
Children1(){
}  
@Override 
public void print(){ 
    System.out.println("I am children1"); 
} 
}  
public class Test {   
public static void main(String arsg[]){ 
    Children1 children = new Children1(); 
    //因?yàn)楦割惖姆椒]有被覆蓋,所以調(diào)用的是父類的方法。返回父類的屬性值 
    System.out.println(children.getInfo()); 
    //內(nèi)部采用反射機(jī)制,因?yàn)閷?shí)例化的是子類 
    children.get(); 
    } 
}

輸出:

以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。

相關(guān)文章

  • IDEA下Servlet可能出現(xiàn)404的一些情況

    IDEA下Servlet可能出現(xiàn)404的一些情況

    相信有很多小伙伴遇到報(bào)錯(cuò)都不知道怎么處理,今天特地整理了這篇文章,文中對(duì)IDEA下Servlet可能出現(xiàn)404的一些情況作了詳細(xì)的介紹,需要的朋友可以參考下
    2021-06-06
  • java如何獲取指定文件夾下的所有文件名

    java如何獲取指定文件夾下的所有文件名

    這篇文章主要介紹了java如何獲取指定文件夾下的所有文件名問題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2024-01-01
  • 以Json形式的數(shù)據(jù)格式實(shí)現(xiàn)JMeter參數(shù)化

    以Json形式的數(shù)據(jù)格式實(shí)現(xiàn)JMeter參數(shù)化

    本文以小項(xiàng)目學(xué)院管理系統(tǒng)為例,給大家分享以Json形式的數(shù)據(jù)格式實(shí)現(xiàn)JMeter參數(shù)化的相關(guān)知識(shí),包括添加元件操作步驟及使用用戶參數(shù)組件實(shí)現(xiàn)參數(shù)化的方法,感興趣的朋友跟隨小編一起看看吧
    2021-05-05
  • Zuul 實(shí)現(xiàn)網(wǎng)關(guān)轉(zhuǎn)發(fā)的五種方式小結(jié)

    Zuul 實(shí)現(xiàn)網(wǎng)關(guān)轉(zhuǎn)發(fā)的五種方式小結(jié)

    這篇文章主要介紹了Zuul 實(shí)現(xiàn)網(wǎng)關(guān)轉(zhuǎn)發(fā)的五種方式小結(jié),具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2021-07-07
  • Mybatis中的mapper模糊查詢語(yǔ)句LIKE

    Mybatis中的mapper模糊查詢語(yǔ)句LIKE

    這篇文章主要介紹了Mybatis中的mapper模糊查詢語(yǔ)句LIKE,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。
    2021-12-12
  • MyEclipse 2016 CI 4新增BootStrap模板

    MyEclipse 2016 CI 4新增BootStrap模板

    MyEclipse2016是一款全球使用最為廣泛的企業(yè)級(jí)開發(fā)環(huán)境程序,這篇文章主要介紹了MyEclipse 2016 CI 4新增BootStrap模板的相關(guān)資料,非常不錯(cuò),具有參考借鑒價(jià)值,需要的朋友可以參考下
    2016-06-06
  • 詳解Spring?Boot中@PostConstruct的使用示例代碼

    詳解Spring?Boot中@PostConstruct的使用示例代碼

    在Java中,@PostConstruct是一個(gè)注解,通常用于標(biāo)記一個(gè)方法,它表示該方法在類實(shí)例化之后(通過構(gòu)造函數(shù)創(chuàng)建對(duì)象之后)立即執(zhí)行,這篇文章主要介紹了詳解Spring?Boot中@PostConstruct的使用,需要的朋友可以參考下
    2023-09-09
  • Java簡(jiǎn)單實(shí)現(xiàn)定時(shí)器

    Java簡(jiǎn)單實(shí)現(xiàn)定時(shí)器

    這篇文章主要為大家詳細(xì)介紹了Java簡(jiǎn)單實(shí)現(xiàn)定時(shí)器,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2021-04-04
  • Java Lambda表達(dá)式和函數(shù)式接口實(shí)例分析

    Java Lambda表達(dá)式和函數(shù)式接口實(shí)例分析

    這篇文章主要介紹了Java Lambda表達(dá)式和函數(shù)式接口,結(jié)合實(shí)例形式分析了Java8 Lambda表達(dá)式和函數(shù)式接口相關(guān)原理、用法及操作注意事項(xiàng),需要的朋友可以參考下
    2019-09-09
  • 在IntelliJ IDEA 搭建springmvc項(xiàng)目配置debug的教程詳解

    在IntelliJ IDEA 搭建springmvc項(xiàng)目配置debug的教程詳解

    這篇文章主要介紹了在IntelliJ IDEA 搭建springmvc項(xiàng)目配置debug的教程詳解,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2020-09-09

最新評(píng)論