mybatisPlus数据映射VO源码分析
Posted 好大的月亮
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了mybatisPlus数据映射VO源码分析相关的知识,希望对你有一定的参考价值。
叙述
大家接触的多的orm框架就是mybatis了,mybatis plus则对mybatis又封装了一层,便于大家使用,底层调用的还是mybatis的方法。
mybatisPlus数据映射VO其实反射调用的set方法赋值.
源码分析
我目前使用的mybatis-plus版本是mybatis-plus-3.5.2.jar。
对应的mybatis版本是mybatis-3.5.10.jar
从一个普通的分页查询一路debug进来,
到org.apache.ibatis.executor.resultset.DefaultResultSetHandler#handleResultSet
方法就是开始执行结果集映射了。
然后进入org.apache.ibatis.executor.resultset.DefaultResultSetHandler#handleRowValuesForSimpleResultMap
方法
接着进入
org.apache.ibatis.executor.resultset.DefaultResultSetHandler#getRowValue(org.apache.ibatis.executor.resultset.ResultSetWrapper, org.apache.ibatis.mapping.ResultMap, java.lang.String)
方法;在方法中先反射实例化目标vo。
然后进入org.apache.ibatis.executor.resultset.DefaultResultSetHandler#applyPropertyMappings
方法利用org.apache.ibatis.reflection.MetaObject
调用set
方法,将值set
进vo
对象中。
大致的调用链路
setBeanProperty:177, BeanWrapper (org.apache.ibatis.reflection.wrapper)
↓
set:59, BeanWrapper (org.apache.ibatis.reflection.wrapper)
↓
setValue:140, MetaObject (org.apache.ibatis.reflection)
↓
applyPropertyMappings:501,DefaultResultSetHandler (org.apache.ibatis.executor.resultset)
↓
getRowValue:411,DefaultResultSetHandler (org.apache.ibatis.executor.resultset)
↓
handleRowValuesForSimpleResultMap:361, DefaultResultSetHandler (org.apache.ibatis.executor.resultset)
↓
handleRowValues:335, DefaultResultSetHandler (org.apache.ibatis.executor.resultset)
↓
handleResultSet:308, DefaultResultSetHandler (org.apache.ibatis.executor.resultset)
↓
handleResultSets:201, DefaultResultSetHandler (org.apache.ibatis.executor.resultset)
以上是关于mybatisPlus数据映射VO源码分析的主要内容,如果未能解决你的问题,请参考以下文章