|
目录
一、结构化数据转换成bean
二、mybatis的对象结构
三、应用
mybatis是如何将查询到的数据自动转换成对象呢?
一、结构化数据转换成bean
1、可以使用利用map 或 json字符串,桥接着转成bean对象
2、利用反射 newInstance ,然后一一赋值
二、mybatis的对象结构

mybatis不是简单的使用反射初始化,而是进行了精心设计
1、考虑扩展性,使用Factory模式,如DefaultObjectFactory,DefaultReflectorFactory、ObjectWrapperFactory,增加用户的自定义
2、考虑性能,定义了GetFieldInvoker、SetFieldInvoker,进行Invoker的首次初始化
3、考虑使用的便捷性,定义了PropertyTokenizer,方便操作对象属性,如 ```delegate.boundSql.parameterObject``` ,通过这种模式,可以直接获取到对象parameterObject属性
三、应用
1、获取对象属性
StatementHandler statementHandler = (StatementHandler) invocation.getTarget();
MetaObject metaStatementHandler = MetaObject.forObject(statementHandler, SystemMetaObject.DEFAULT_OBJECT_FACTORY, SystemMetaObject.DEFAULT_OBJECT_WRAPPER_FACTORY, new DefaultReflectorFactory());
Object parameterObject = metaStatementHandler.getValue("delegate.boundSql.parameterObject");
doSplitTable(metaStatementHandler,parameterObject);
2、解析ResultSet,并对新对象初始化

|