代码之家  ›  专栏  ›  技术社区  ›  Xin

Mybatis(iBatis)是如何读取我的私有变量的?

  •  2
  • Xin  · 技术社区  · 11 年前

    我想知道Mybatis是如何在Java中获得私有变量的。

    例如:

    假设我们有一个名为Foo的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的情况下,傻瓜ID也是可读的(即使有一个用于傻瓜ID的Getter方法,我也从不指定Getter是什么…)。这对我来说似乎很神奇,我知道编程没有魔法…:)

    我唯一能想到的就是反思。

    提前感谢您的帮助。

    1 回复  |  直到 11 年前
        1
  •  1
  •   Arunas Junevicius    11 年前

    这是正确的,反射用于访问私有字段,但前提是访问私有字段不受限制。 像反射这样的接缝被大量使用,不仅用于访问私有字段,还用于调用setter-getter等。