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

论坛 期权论坛 脚本     
匿名技术用户   2021-1-5 08:51   88   0

目录

一、结构化数据转换成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,并对新对象初始化

分享到 :
0 人收藏
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

积分:7942463
帖子:1588486
精华:0
期权论坛 期权论坛
发布
内容

下载期权论坛手机APP