mybatis进击六:mybatis的对象管理体系

目录

一、结构化数据转换成bean

二、mybatis的对象结构

三、应用


mybatis是如何将查询到的数据自动转换成对象呢?

一、结构化数据转换成bean

1、可以使用利用map 或 json字符串,桥接着转成bean对象

2、利用反射 newInstance ,然后一一赋值

二、mybatis的对象结构

mybatis进击六:mybatis的对象管理体系_第1张图片

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,并对新对象初始化

mybatis进击六:mybatis的对象管理体系_第2张图片

你可能感兴趣的:(mybatis,Java)