在实现前我们需要熟悉一个mybatis中常用的类的使用。它便是:MetaObject
它的作用是可以帮助我们取到一些属性和设置属性(包括私有的)。它有三个方法:
MetaObject forObject(Object object,ObjectFactory objectFactory, ObjectWrapperFactory objectWrapperFactory)
这个方法我们基本不用了,因为MyBATIS中可以用SystemMetaObject.forObject(Object obj)代替它。
Object getValue(String name)
void setValue(String name, Object value)
第一个方法是绑定对象,第二个方法是根据路径获取值,第三个方法是获取值。
这些说还是有点抽象,我们举个例子,比如说现在我有个学生对象(student),它下面有个属性学生证(selfcard),学生证也有个属性发证日期(date)。
但是发证日期是一个私有的属性且没有提供公共方法访问。我们现在需要访问它,那么我们就可以使用MetaObject将其绑定:
MetaObject metaStudent = SystemMetaObject.forObject(student);
这样便可以读取它的属性:
Date date =(Date) metaStudent.getValue("selfcard.date");
或者设置它的属性:
metaStudent.setValue("selfcard.date", new Date());