Mybatis源码篇(二)配置文件解析流程

Mybatis的整个底层流程其实可以分为两个大的部分:一个是配置文件加载解析的过程;另一个是方法执行的流程。前者是后者的基础,只有配置文件都加载好了,后面我们执行方法的时候,才能及时且方便的拿到我们需要拿到的信息。本文我们就从源码的角度来分析分析整个Mybatis的加载流程。文末会有彩蛋哦。 从SqlSessionFactory的构建说起首先我们需要知道的是,Mybatis对外...

MyBatis是如何执行一条SQL语句的

theme: vue-pro highlight: xcode背景在前两天的一次面试中,面试官问了一个和标题一样的问题,由于一直认为MyBatis只是一个ORM框架,所以并没有对他有过深入的了解,于是被问到了,那么这一篇文章来从源码探究一下MyBatis是如何执行一条SQL语句的。 阅读环境源码环境,github直接下载的main分支代码,版本号为 3.5.11-SNAPSHO...

Mybatis核心组件介绍

theme: channing-cyan 持续创作,加速成长!这是我参与「掘金日新计划 · 6 月更文挑战」的第28天,点击查看活动详情 前言  上一篇文章简单介绍了Mybatis的组成架构,现在就对其中各个组件的作用进一步介绍,让大家对Mybatis有更深入的了解。 核心组件  1、SqlSession: 表示与数据库交互的会话,完成对数据库的CURD功能。   2、E...

Mybatis配置解析 --构建者模式

Mybatis的构建者模式 这些构建者都是为mybatis加载资源,解析mybatis-config.xml、*mapper.xml、mapper.class的按建造者的编写顺序,也是mybatis资源的加载顺序mybatis解析资源时核心代码调用链 SqlSessionFactoryBuilder#build (构建SqlSessionFactory) →XMLCon...

MyBatis3源码解析-执行SQL流程

theme: nico持续创作,加速成长!这是我参与「掘金日新计划 · 6 月更文挑战」的第27天,点击查看活动详情 获取SQL前言 其实我们有在XML配置文件中配置标签来加载我们的mapper文件。 官网文档给了答案:总共有四种方式()。 源码前文了解了XML 配置解析器XMLConfigBuilder的parse()方法便是加载配置文件生成一个Configuratio...

MyBatis3源码解析-如何获取数据源

theme: nico持续创作,加速成长!这是我参与「掘金日新计划 · 6 月更文挑战」的第26天,点击查看活动详情 前言上文讲的MyBatis部署运行且根据官网运行了一个demo:一步到位部署运行MyBatis3源码<保姆级> jdbc再贴一个JDBC运行的测试方法,流程为: 加载JDBC驱动;获取数据库连接;创建JDBC Statements对象;设置SQL语...

MyBatis 源码学习笔记(二)- MyBatis 进阶(Part B)

highlight: a11y-light三、MyBatis Mapper XML 文件insert、update、delete 标签insert、update、delete 标签包含的属性如下: 属性 | 描述 | 备注| ———————— | ————————— | ————————————————-| i...

mybatis查询mysql 数据库中 BLOB字段,结果出现乱码

起因 mybatis-plus 通过Mapper 查询数据,映射出来的BLOB字段中的yml数据中文是乱码的 --- DefaultValue: Formula: HintContent: HintType: OptionsColor: 处理: 外修中: 完成: 接单: 新建: 评价:...

Mybatis之使用LocalDateTime等java8新日期时间类型报错

Mybatis之使用LocalDateTime等java8新日期时间类型报错版本 Mybatis: 3.5.6 需求描述在PO中使用LocalDateTime等java8新日期时间类型来代替Date时间类型 初始思路将Date直接改为LocalDateTime 初始结果查询结果报错,如下 org.springframework.web.util.NestedServletExc...

实现 SimpleExecutor 类中 query 方法

持续创作,加速成长!这是我参与「掘金日新计划 · 6 月更文挑战」的第 24 ,点击查看活动详情 在上期课程中,我们完成了 Executor 接口创建以及 query() 方法的定义和创建 Executor 接口的实现类 SimpleExecutor,并重新了 query() 方法,但是 query() 方法具体实现没有完成。在本期课程中,完成 query() 方法的具体实现。...