![](https://img-blog.csdnimg.cn/20201014180756919.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
mybatis源码分析
HAD_HAD
这个作者很懒,什么都没留下…
展开
-
mybatis之Property工具集
PropertyTokenizer该类主要是解析一些稍微复杂的表达式orders[O].item[0].name这种表达式/** * @author Clinton Begin * 属性标记器 *//** * 假设传入的为student[sId].name * 则各个属性得到以下结果 * * 该属性标记器只能处理一级,即点后面的都作为children */public class PropertyTokenizer implements Iterator<Propert原创 2021-03-03 09:46:34 · 2894 阅读 · 0 评论 -
mybatis之Reflector和ReflectorFactory
Reflector和ReflectorFactoryReflectorFactory/** * 工厂接口的默认实现 */public class DefaultReflectorFactory implements ReflectorFactory { //该字段决定了是否对开启对Reflector的缓存 private boolean classCacheEnabled = true; //使用线程安全的map对Reflector对象进行缓存 private final Conc原创 2021-03-03 09:45:54 · 180 阅读 · 0 评论 -
mybatis之TypeParameterResolver工具类
TypeParameterResolver它是一个工具类,提供了一系列静态方法来解析指定类中的宇段、方法返回值或方法参数的类型。 TypeParameterResolver 中各个静态方法之间的调用关系大致如图 2-11 所示,为保持清晰,其中递归调用没有表现出来,在后面的代码分析过程中会进行强调。public class TypeParameterResolver { /** * @return The field type as {@link Type}. If it原创 2021-03-03 09:45:09 · 217 阅读 · 0 评论 -
mybatis之Type类
Type类type类是所有类型的父接口,它由四个子接口和一个实现类下面来看这些子接口和子类所代表的类型。Class类比较常见,它表示的是原始类型。Class类表示的是JVM中的一个类或者接口。每个java类在JVM中都表现为一个Class对象。在程序中可以通过类名.class或者对象.getClass()或者是Class.forName(全限定类名)来获取Class对象。数组也也被映射为Class对象,所有元素类型相同并且维数相同的数组都共享一个Class对象。Parameteri原创 2021-03-03 09:42:00 · 952 阅读 · 0 评论 -
mybatis之Log接口及其实现类
Log接口及其实现类public interface Log { boolean isDebugEnabled(); boolean isTraceEnabled(); void error(String s, Throwable e); void error(String s); void debug(String s); void trace(String s); void warn(String s);}public final class LogF原创 2021-03-03 09:38:24 · 605 阅读 · 0 评论 -
mybatis之ResolverUtil工具类
ResolverUtil工具类* ResolverUtil 用来定位某个class路径下满足任意条件的类们。通常的筛选条件是: * 类继承了某个接口 * 实现了某个类 * 类拥有可定的注解 * 基于Test类可以用来判断某各类是否满足这些条件 public class ResolverUtil<T> { /* * An instance of Log to use for logging in this class. */ private static f原创 2021-03-03 09:37:30 · 318 阅读 · 0 评论 -
mybatis之日志系列适配器
适配器模式适配器其实很简单,就是实现类Adaptee无法实现Target的接口,所有封装了一个中间层Apapter适配器,该适配器实现了接口Target并且把实现类Adaptee作为类参数。Apapter在实现接口Target的方法是实际上是使用了参数Adaptee进行实现。public interface Target { void 吃饭();}public class Adaptee { void 吃大米饭() { System.out.println("吃大原创 2021-03-03 09:34:33 · 112 阅读 · 0 评论 -
mybatis值VFS虚拟文件类
VFS接口 private static final Log log = LogFactory.getLog(VFS.class); /** 记录 MyBatis 供的两个 VFS 实现类. */ public static final Class<?>[] IMPLEMENTATIONS = { JBoss6VFS.class, DefaultVFS.class }; /** 记录 用户自定义 VFS 实现类 VFS addimplClass ()方法会将指定的 VFS 实原创 2021-03-03 09:31:30 · 461 阅读 · 0 评论 -
mybatis源码分析之XMLConfigBuilder对XML文件的解析
XMLConfigBuilder对XML文件的解析public SqlSessionFactory build(InputStream inputStream, String environment, Properties properties) { try { XMLConfigBuilder parser = new XMLConfigBuilder(inputStream, environment, properties); return build(parser.p原创 2021-02-25 09:41:03 · 177 阅读 · 2 评论 -
mybatis源码分析之XMLConfigBuilder创建过程2
XMLConfigBuilder创建过程2Configuration的初始化过程Configuration作为一个配置类对象,为许多类所共享(许多类的参数就是他),因此它是一个全局共享的配置类。Configuration类在初始化过程中初始化了许多工具类,注册中心等等,这些类主要是为了以后的应用。下边是几个Configuration类主要的参数:// <environment>节点的信息 protected Environment environment; // 以下为<原创 2021-02-25 09:40:30 · 149 阅读 · 1 评论 -
mybatis源码分析
XMLConfigBuilder的创建过程SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);public SqlSessionFactory build(InputStream inputStream, String environment, Properties properties) { try { XMLConfigBuilder parser = n原创 2021-02-25 09:40:04 · 118 阅读 · 1 评论 -
mybatis源码分析
Mybatis的初始化过程1 mybatis使用代码mybatis官网文档主要流程图 public class MyBatisMain { public static void main(String[] args) { // 第一阶段:MyBatis的初始化阶段,配置各项属性 String resource = "conf/mapperTest.xml"; // 得到配置文件的输入流 InputStream input原创 2021-02-25 09:39:09 · 65 阅读 · 0 评论