首页 > 其他分享 >mybatis 分析

mybatis 分析

时间:2022-10-26 15:00:12浏览次数:57  
标签:分析 jdbc MapperFactoryBean scanner URL 数据源 mybatis

 jdbc

jdbc 主要作用是获取数据源,获得查询结果。存在的问题是需要手写 sql,对结果集处理麻烦,mybatis 主要解决这个两个问题

// 1.加载类,并注册驱动器(Driver会注册到DriverManager中)
Class.forName("oracle.jdbc.driver.OracleDriver").newInstance();
// 2.根据特定的URL,返回可以接受此URL的数据库驱动对象
Driver driver = DriverManager.getDriver(URL);
// 3.使用数据库驱动创建数据库连接Connection会话
connection = driver.connect(URL, props);
// 4.获得Statement对象
statement = connection.createStatement();
// 5.执行 sql语句,返回结果
resultSet = statement.executeQuery("select * from emp"); 

 

 

 mybatis

    <bean class="org.mybatis.spring.mapper.MapperScannerConfigurer">
        <property name="basePackage" value="com.xx.dao"/>
        <property name="sqlSessionFactoryBeanName" value="sessionFactory"/>
        <property name="annotationClass" "value=""com.selfdefine.MyDataSource"/>
    </bean>
MapperScannerConfigurer 中 annotationClass 指定了数据源注解名称,使用 @MyDataSource 注解的 Mapper 文件才会被这个实例处理,可以配置多个 MapperScannerConfigurer,分别处理不同的数据源。basePackage 指定了 MapperScannerConfigurer 扫描的范围,sqlSessionFactoryBeanName 表示使用的数据源。
public void postProcessBeanDefinitionRegistry(BeanDefinitionRegistry registry) {
  if (this.processPropertyPlaceHolders) {
    processPropertyPlaceHolders();
  }

  ClassPathMapperScanner scanner = new ClassPathMapperScanner(registry);
  scanner.setAddToConfig(this.addToConfig);
  scanner.setAnnotationClass(this.annotationClass);
  scanner.setMarkerInterface(this.markerInterface);
  scanner.setSqlSessionFactory(this.sqlSessionFactory);
  scanner.setSqlSessionTemplate(this.sqlSessionTemplate);
  scanner.setSqlSessionFactoryBeanName(this.sqlSessionFactoryBeanName);
  scanner.setSqlSessionTemplateBeanName(this.sqlSessionTemplateBeanName);
  scanner.setResourceLoader(this.applicationContext);
  scanner.setBeanNameGenerator(this.nameGenerator);
  scanner.registerFilters();
  scanner.scan(StringUtils.tokenizeToStringArray(this.basePackage, ConfigurableApplicationContext.CONFIG_LOCATION_DELIMITERS));
}
扫描出的 mapper 接口文件,全部被实例化为 MapperFactoryBean

MapperFactoryBean 是一个 initalizaingBean,它是 Daosupport 子类

 MapperFactoryBean 子类实现,下面分析 addMapper 方法

 

 

标签:分析,jdbc,MapperFactoryBean,scanner,URL,数据源,mybatis
From: https://www.cnblogs.com/wudeyun/p/16828394.html

相关文章

  • Webpack完整打包流程分析
    前言webpack在前端工程领域起到了中流砥柱的作用,理解它的内部实现机制会对你的工程建设提供很大的帮助(不论是定制功能还是优化打包)。下面我们基于webpack5源码结构,对......
  • vue源码分析-v-model的本质
    双向数据绑定这个概念或者大家并不陌生,视图影响数据,数据同样影响视图,两者间有双向依赖的关系。在响应式系统构建的上,中,下篇我已经对数据影响视图的原理详细阐述清楚了。而......
  • vue源码分析-diff算法核心原理
    这一节,依然是深入剖析Vue源码系列,上几节内容介绍了VirtualDOM是Vue在渲染机制上做的优化,而渲染的核心在于数据变化时,如何高效的更新节点,这就是diff算法。由于源码中关于d......
  • Vue响应式依赖收集原理分析-vue高级必备
    背景在Vue的初始化阶段,_init方法执行的时候,会执行initState(vm),它的定义在src/core/instance/state.js中。在初始化data和propsoption时我们注意initProps......
  • 回归分析-2.X 简单线性回归
    2.1简单线性回归模型y与x之间的关系假设\(y=\beta_0+\beta_1+\varepsilon\)\(E(\varepsilon|x)=0\)\(Var(\varepsilon|x)=\sigma^2~则~Var(y|x)=\sigma^2\)同方差假......
  • 论人类下一代语言的可能—6.2书写符号操作的分析
    本节里我们分析对书写符号所进行的操作,分析从物理的动作开始,再逐渐考虑其中的智力因素。书写符号纯粹的物理原子操作是画出一条连续的线条。在此基础上,符号的原子层级操作......
  • Hive实战之航空数据分析
    接着上Hive大数据开发(一套打通)继续写PS:最好是手敲代码一遍,有些代码可能是中文输入法打出来的,因为SQL代码块显示不出来Hive语法,导致看不出来到底是什么地方出现错误。所以......
  • 算法分析笔记----wsdchong
    时间:2018/12/20一、算法概述什么是算法1.算法:为一个计算的具体步骤;常用于计算、数据处理、推理等性质:有限、确定、可行、输入、输出;目的:解决问题(问题定义了输入和输出)2.例子......
  • MyBatis学习笔记--wsdchong
    前言:学编程和学绘画一样,都是从模仿开始。初识mybatis、mybatis的核心配置、动态SQL、mybatis的关联映射、与spring的整合。 一、初识mybatis概念:1mybatis是一个支持普通SQL......
  • MyBatis 从入门到放弃 ( MyBatis基础总结 )
    目录MyBatis历史Mybatis特性MyBatis下载和其它持久化层技术对比开发环境创建maven工程创建MyBatis的核心配置文件创建mapper接口创建MyBatis的映射文件通过junit测试功能加......