一、JavaBean的规范

类中定义的成员变量也称为字段,属性则是通过getter/setter方法得到的,属性只与类中的方法有关,与是否存在对应成员变量没有关系。

属性的getter/setter方法与同名的字段,常常是一起出现。但还是有必要区分他们是两个概念。

例如:getA方法和setA(String)方法,无论类中是否定义了字段String a,我们都认为类中存在属性a.

二、mybatis的反射类型

1、org.apache.ibatis.reflection.Reflector

对Class做一些反射的操作。
具有缓存的特性,提升运行效率。
比如:setter/getter方法,属性。 2、org.apache.ibatis.reflection.ReflectorFactory,org.apache.ibatis.reflection.DefaultReflectorFactory 对class对象生成Reflector
工厂模式 3、org.apache.ibatis.reflection.TypeParameterResolver 获取javaBean中的属性的java类型
获取javaBean的Method的参数类型和返回类型
4、org.apache.ibatis.reflection.factory.ObjectFactory,org.apache.ibatis.reflection.factory.DefaultObjectFactory

mybatis根据class创建对象的工厂类

5、org.apache.ibatis.reflection.MetaClass

对Reflector,和ReflectorFactory封装
主要是解决对类级别的元信息的操作 6、org.apache.ibatis.reflection.wrapper.ObjectWrapper ObjectWrapper接口是对对象的包装,抽象了对象的属性信息。
它定义了一系列查询对象属性信息的方法。 7、org.apache.ibatis.reflection.wrapper.ObjectWrapperFactory,org.apache.ibatis.reflection.wrapper.DefaultObjectWrapperFactory
对对象的包装

8、org.apache.ibatis.reflection.MetaObject

ObjectWrapper提供了获取/设置对象中指定的属性,检测getter/setter等常用功能。
但是ObjectWrapper只是这些功能的最后一站,我们省略了对属性表达式解析过程的介绍。而该解析过程是在MetaObject中实现的。
 

【mybatis源码学习】mybtias基础组件-反射工具的更多相关文章

  1. mybatis源码学习:一级缓存和二级缓存分析

    目录 零.一级缓存和二级缓存的流程 一级缓存总结 二级缓存总结 一.缓存接口Cache及其实现类 二.cache标签解析源码 三.CacheKey缓存项的key 四.二级缓存TransactionCa ...

  2. mybatis源码学习:基于动态代理实现查询全过程

    前文传送门: mybatis源码学习:从SqlSessionFactory到代理对象的生成 mybatis源码学习:一级缓存和二级缓存分析 下面这条语句,将会调用代理对象的方法,并执行查询过程,我们一 ...

  3. Mybatis源码学习第六天(核心流程分析)之Executor分析

    今Executor这个类,Mybatis虽然表面是SqlSession做的增删改查,其实底层统一调用的是Executor这个接口 在这里贴一下Mybatis查询体系结构图 Executor组件分析 E ...

  4. mybatis源码学习(一) 原生mybatis源码学习

    最近这一周,主要在学习mybatis相关的源码,所以记录一下吧,算是一点学习心得 个人觉得,mybatis的源码,大致可以分为两部分,一是原生的mybatis,二是和spring整合之后的mybati ...

  5. mybatis源码学习:插件定义+执行流程责任链

    目录 一.自定义插件流程 二.测试插件 三.源码分析 1.inteceptor在Configuration中的注册 2.基于责任链的设计模式 3.基于动态代理的plugin 4.拦截方法的interc ...

  6. Mybatis源码学习之整体架构(一)

    简述 关于ORM的定义,我们引用了一下百度百科给出的定义,总体来说ORM就是提供给开发人员API,方便操作关系型数据库的,封装了对数据库操作的过程,同时提供对象与数据之间的映射功能,解放了开发人员对访 ...

  7. MyBatis源码分析(各组件关系+底层原理

    MyBatis源码分析MyBatis流程图 下面将结合代码具体分析. MyBatis具体代码分析 SqlSessionFactoryBuilder根据XML文件流,或者Configuration类实例 ...

  8. Mybatis源码学习第八天(总结)

    源码学习到这里就要结束了; 来总结一下吧 Mybatis的总体架构 这次源码学习我们,学习了重点的模块,在这里我想说一句,源码的学习不是要所有的都学,一行一行的去学,这是错误的,我们只需要学习核心,专 ...

  9. mybatis源码学习(三)-一级缓存二级缓存

    本文主要是个人学习mybatis缓存的学习笔记,主要有以下几个知识点 1.一级缓存配置信息 2.一级缓存源码学习笔记 3.二级缓存配置信息 4.二级缓存源码 5.一级缓存.二级缓存总结 1.一级缓存配 ...

随机推荐

  1. GFS中文翻译

    Google文件系统 GFS是一个可扩展的分布式文件系统,用于大型的.分布式的.对大量数据进行访问的应用.它运行于廉价的普通硬件上,但可以提供容错功能.它可以给大量的用户提供总体性能较高的服务. 1. ...

  2. bs4 CSS选择器

    #https://www.crummy.com/software/BeautifulSoup/bs4/doc/index.zh.html#find-all #beautifulSoup可以解析HTML ...

  3. [Leetcode 392]判断子序列 Is Subsequence

    [思路] 判断s是否为t的子串,所以length(s)<=length(t).于是两个指针,一次循环. 将s.t转换为数组p1.p2. i为过程中s的匹配长度. i=0空串,单独讨论返回true ...

  4. 深入理解java虚拟机---垃圾回收(十一)

    1.垃圾回收要解决的问题 可以通过配置虚拟机参数来打印出内存日志: -verbose:gc -XX:+PrintGCDetails 垃圾收集(Garbage Collection,GC),要设计一个G ...

  5. centos7下nginx安全配置

    Linux服务器下nginx的安全配置   1.一些常识 linux下,要读取一个文件,首先需要具有对文件所在文件夹的执行权限,然后需要对文件的读取权限. php文件的执行不需要文件的执行权限,只需要 ...

  6. UNITY3d在移动设备上的一些优化实战

    项目进入了中期之后,就需要对程序在移动设备上的表现做分析评估和针对性的优化了,首先前期做优化,很多瓶颈没表现出来,能做的东西不多,而且很多指标会凭预想,如果太后期做优化又会太晚,到时发现一些问题改起来 ...

  7. Java语法基础学习DayFour

    一.面向对象 1.特点: A:是一种更符合我们思考习惯的思想B:把复杂的事情简单化C:让我们从执行者变成了指挥者 2.使用: a:创建对象格式类名 对象名 = new 类名();b:如何使用成员变量和 ...

  8. dos命令:window10程序控制命令

    一.A appwiz.cpl::程序和功能 二.C calc:启动计算器 certmgr.msc:证书管理实用程 charmap:启动字符映射表 chkdsk.exe:Chkdsk:磁盘检查(管理员身 ...

  9. React 高阶组价详解

    这个教程还是不错的...

  10. Day29作业及默写

    作业: 1\ 默写 黏包协议 2\ 上传大文件(文件\视频\图片) 3\ 和你的同桌调通 从你的计算机上传一个视频到你同桌的电脑上 4\ 进阶 : 带上登录 Server #Server #!/usr ...