2013-04-03 20 views
2

我想知道Mybatis如何獲得Java中的私有變量。MyBatis(iBatis)如何讀取我的私有變量?

例如:

比方說,我們有一個名爲富的Java類:

public class Foo{ 
    private int foolID; 

    public Foo(int foolID){ 
    this.foolID = foolID; 
    } 
} 

而且讓我們創建XML映射器插件。

<insert id="insert" parameterType="Foo"> 
    insert into foo_table (id) 
    values (#{foolID}); 
</insert> 

假設有這個插入的FooDAO java類和FooMapper java接口。

我的問題是,即使沒有Getter,foolID也是可讀的(即使有一個用於foolID的getter方法,我也不會指定getter是什麼...)。這對我來說似乎很神奇,我知道編程沒有什麼魔力...... :)

我能想到的唯一方法就是反射。

感謝您的幫助提前。

回答

1

這是正確的,反射用於訪問私有字段,但前提是訪問私有字段不受限制。 像反射接縫不僅用於訪問私人領域,但調用setter getters等

+0

另一個問題,你是什麼意思「只有訪問私人領域不受限制。你如何限制私人領域? – Xin

+0

您可以打開[安全管理器](http://docs.oracle.com/javase/tutorial/essential/environment/security.html)並配置它在[GlassFish](https://weblogs.java。 net/blog/felipegaucho/archive/2010/01/02/glassfish-securitymanagercheckpermission)服務器來限制反射。 –