E-COM-NET
首页
在线工具
Layui镜像站
SUI文档
联系我们
推荐频道
Java
PHP
C++
C
C#
Python
Ruby
go语言
Scala
Servlet
Vue
MySQL
NoSQL
Redis
CSS
Oracle
SQL Server
DB2
HBase
Http
HTML5
Spring
Ajax
Jquery
JavaScript
Json
XML
NodeJs
mybatis
Hibernate
算法
设计模式
shell
数据结构
大数据
JS
消息中间件
正则表达式
Tomcat
SQL
Nginx
Shiro
Maven
Linux
【MyBatis源码解析】
Mybatis源码解析
之数据源和SQL构建
文章目录1、Mybatis官网简介2、Demo搭建2.1、maven依赖2.2、mybatis配置2.3、mapper文件配置2.3、测试类3、源码解析3.1、初始化阶段3.2、获取数据源3.3、构建SQL语句3.4、解析mybatis-config.xml过程总结4、常见面试题5、MyBatis数据库连接和SQL执行1、Mybatis官网简介MyBatis一款半自动的ORM持久层框架,它支持自定
JAVAERS_Q
·
2020-06-25 11:40
MyBatis
【Mybatis源码】一级缓存
参考:五月的仓颉:【
MyBatis源码解析
】MyBatis一二级缓存凯伦:聊聊MyBatis缓存机制Mybatis一级缓存配置:value有两个值可选:session:缓存对一次会话中所有的执行语句有效
S_H-A_N
·
2020-06-24 08:35
mybatis
Mybatis运行原理及源码解析
Mybatis源码解析
一、前言本文旨在
mybatis源码解析
,将整个mybatis运行原理讲解清楚,本文代码地址:https://github.com/lchpersonal/mybatis-learn
左撇子小哥哥
·
2020-06-24 03:15
mybatis
MyBatis源码解析
(三)—缓存篇
前言大家好,这一篇文章是MyBatis系列的最后一篇文章,前面两篇文章《
MyBatis源码解析
(一)—构建篇》和《
MyBatis源码解析
(二)—执行篇》,主要说明了MyBatis是如何将我们的xml配置文件构建为其内部的
ObjectSpace
·
2020-06-22 02:37
技术博客
MyBatis源码解析
(二)—执行篇
前言上一篇文章《
MyBatis源码解析
(一)—构造篇》提到了MyBatis是如何构建配置类的,也说了MyBatis在运行过程中主要分为两个阶段,第一是构建,第二就是执行,所以这篇文章会带大家来了解一下MyBatis
ObjectSpace
·
2020-06-22 02:37
技术博客
Mybatis源码解析
1.mybatis作为SSM中的持久层,我们都知道他是对JDBC的封装,那么他底层是如何实现的呢(新人记录学习,可能分析的不是很到位各位别喷,下面分析并不是接口绑定的情况)先从解析配置文件说起先从这个方法作为如果,调用重载方法;类加载器为空,又调用了classLoaderWrapper.getResourceAsStreamgetClassLoaders里面又创建了新的类加载器:这个方法最终会返回
Hello stupid
·
2020-06-21 23:09
源码解析
mybatis源码解析
---执行mapper接口方法到执行mapper.xml的sql的过程
TgetMapper(Classtype);很显然这个方法是更加Class名获取该类的一个实例,而Mapper接口只定义了接口没有实现类,那么猜想可知返回的应该就是更加mapper.xml生成的实例了。具体是如何实现的呢,先看下这个方法是如何实现的?DefaultSqlSession实现该方法的代码如下:1@Override2publicTgetMapper(Classtype){3returnc
夏的世界的伤
·
2020-06-21 21:00
【MyBatis 源码解析】 | Chat · 预告
1
MyBatis源码解析
:通过源码深入理解SQL的执行过程作者简介:来,某大型互联网电商公司的资深后端工程师,对源码、架构颇有兴趣和研究。
技术杂谈哈哈哈
·
2020-06-21 21:52
mybatis源码解析
七(DefaultSqlSession线程安全问题)
最近在看源码发现一个问题,在看到DefaultSqlSession这个类的源码的时候,发现这个类上有一句注释,NotethatthisclassisnotThread-Safe意思说说,此类不是线程安全的,及既然不是线程安全的,怎么还是默认实现那接下来,我们就一起从源码的角度分析一下,我们写一个小案例,然后通过案例一起分析下,这里我们以查询为主,代码很简单,就是一个简单的查询,我们定义了一个线程,
为梦想前进
·
2020-04-07 15:02
mybatis源码解析
八(spring处理sqlsession线程安全问题)
上一期,分析了下关于mybatis的处理sqlsession线程安全的问题,主要是通过sqlSessionManager代理类增强的形式,通过每次创建一个新的DefautSqlsession或者将当前线程放入到Threadlocal中实现的,那么我们在使用mybatis的时候,一般不可能单独使用mybatis的,一般都是和sprig框架配合使用,现在都是面向spring编程了,所以,本次我们一起分
为梦想前进
·
2020-04-07 15:14
Mybatis源码解析
(构造篇)
今天会给大家分享我们常用的持久层框架——MyBatis的工作原理和源码解析,欢迎探讨!说实话MyBatis是我第一个接触的持久层框架,在这之前我也没有用过Hibernate,从Java原生的Jdbc操作数据库之后就直接过渡到了这个框架上,当时给我的第一感觉是,有一个框架太方便了。举一个例子吧,我们在Jdbc操作的时候,对于对象的封装,我们是需要通过ResultSet.getXXX(index)来获
java风清扬
·
2020-03-13 11:17
Mybatis源码解析
-请求解析
我们再第一篇文章中介绍到了动态代理。他的InvocationHandler的事例MapperProxy来处理真正的请求。@OverridepublicObjectinvoke(Objectproxy,Methodmethod,Object[]args)throwsThrowable{if(Object.class.equals(method.getDeclaringClass())){try{re
数齐
·
2020-03-02 03:34
MyBatis源码解析
(二)——动态代理实现函数调用
如果我们要使用MyBatis进行数据库操作的话,大致要做两件事情:定义DAO接口在DAO接口中定义需要进行的数据库操作。创建映射文件当有了DAO接口后,还需要为该接口创建映射文件。映射文件中定义了一系列SQL语句,这些SQL语句和DAO接口一一对应。MyBatis在初始化的时候会将映射文件与DAO接口一一对应,并根据映射文件的内容为每个函数创建相应的数据库操作能力。而我们作为MyBatis使用者,
大闲人柴毛毛
·
2020-02-07 03:02
mybatis源码解析
之架构理解
mybatis是一个非常优秀的开源orm框架,在大型的互联网公司,基本上都会用到,而像程序员的圣地—阿里虽然用的是自己开发的一套框架,但其核心思想也无外乎这些,因此,去一些大型互联网公司面试的时候,总是会问到对于这些开源框架的理解,有没有阅读开源框架的源码,虽说是面试造火箭,工作拧螺丝,但是让你造火箭的时候,你总得能伸把手啊。所以,我们既然不能改变大厂,那只能自己去提升源码阅读的能力了。mybat
吃肉不长肉的小灏哥
·
2020-02-06 21:00
Mybatis源码解析
之Interceptor
[上一篇]:
Mybatis源码解析
之SqlSession来自何方上一篇中我们知道了sqlSession是最后通调用sessionFactory.openSession(executorType)得到的,
eliter0609
·
2020-02-02 07:50
Mybatis源码解析
之SqlSession来自何方
[上一篇]:
Mybatis源码解析
之MapperProxy上一篇我们知道了MyBatis通过JDK动态代理让我们只用写接口不用写实现,但是还是有一些细节需要我们去研究下。
eliter0609
·
2020-02-02 02:07
Mybatis源码解析
之配置解析
[上一篇]:
Mybatis源码解析
之Spring获取Mapper过程菜菜的上一篇《
Mybatis源码解析
之Spring获取Mapper过程》主要介绍的是MapperScan,并从中知道了Spring与MyBatis
eliter0609
·
2020-02-01 20:02
Mybatis源码解析
之MapperProxy
[上一篇]:
Mybatis源码解析
之配置解析从菜菜的
Mybatis源码解析
之Spring获取Mapper过程中知道了Spring与MyBatis如何连接起来的,这篇菜菜将介绍MyBatis的重中之重MapperProxy
eliter0609
·
2020-02-01 20:15
Mybatis源码解析
之Spring获取Mapper过程
MyBatis是一款优秀的持久层构架,它支持定制化SQL语句、存储过程以及高级映射,可以通过简单的XML或注解配置和映射原生信息,将POJOs映射成数据库中的记录,从而方便进行增删改查的操作(官网)问题Spring如何与MyBatis连接起来的?如何去获取Mybatis中的Mapper,以及获取Mapper时干了哪些骚操作?为了弄清楚上述问题,菜菜首先贴出开发时主要用到的MyBatis配置,随后进
eliter0609
·
2020-02-01 14:45
设计模式经典实践-
Mybatis源码解析
前言Mybatis应该是当前已知的主流框架源码阅读成本最低,设计最为简洁友好的框架。设计模式差不多是框架设计者和阅读者的潜在遵守的规约,如果双方都按照这个套路来,读写双方都很愉快。如果把编码比作文章的话,设计模式差不多也是整个行文的中心思想和脉络,按照既定模式来撸,没毛病!Mybatis整体架构图Mybatis核心流程之SqlSessionFactory与SqlSession.涉及到的设计模式:工
大方一号
·
2020-01-07 03:39
Mybatis源码解析
(三) —— Mapper代理类的生成
Mybatis源码解析
(三)——Mapper代理类的生成 在本系列第一篇文章已经讲述过在Mybatis-Spring项目中,是通过MapperFactoryBean的getObject()方法来获取到
BUG9
·
2019-11-15 19:56
java
Mybatis源码解析
(二) —— 加载 Configuration
Mybatis源码解析
(二)——加载Configuration 正如上文所看到的Configuration对象保存了所有Mybatis的配置信息,也就是说mybatis-config.xml以及mapper.xml
BUG9
·
2019-11-09 08:10
java
MyBatis源码解析
6-SpringManagedTransaction与TransactionSynchronizationManager
SpringManagedTransaction实现了Transaction接口。里面用到了一个很重要的类TransactionSynchronizationManager.主要用到了TransactionSynchronizationManager的两个方法publicstaticvoidbindResource(Objectkey,Objectvalue)throwsIllegalStateE
frankliu01
·
2019-09-09 17:19
源码解析
MyBatis源码解析
5-MapperProxy与JDK Proxy动态代理
JDKproxy(JDK动态代理)包括jdk中三个重要的类java.lang.reflect.Proxyjava.lang.reflect.InvocationHandlersun.misc.ProxyGenerator用的时候Proxy.javapublicstaticObjectnewProxyInstance(ClassLoaderloader,Class[]interfaces,Invoc
frankliu01
·
2019-09-06 11:21
源码解析
MyBatis源码解析
4-每个Mapper类都会生成一个唯一的Mapper代理对象
mybatis-spring-1.3.2.jar中有5个类org.mybatis.spring.mapper.MapperScannerConfigurerorg.mybatis.spring.mapper.ClassPathMapperScannerorg.mybatis.spring.mapper.MapperFactoryBeanorg.mybatis.spring.SqlSessionTe
frankliu01
·
2019-09-05 17:42
源码解析
MyBatis源码解析
3-MapperFactoryBean
org.mybatis.spring.mapper.MapperFactoryBean是我们本篇文章需要研究到核心类。这个类的源码在mybatis-spring.jar中,不在mybatis.jar中比如我们数据库操作到interface为GreetMapperpublicinterfaceGreetMapper{Stringlist();}MapperFactoryBean会生成一个GreetM
frankliu01
·
2019-09-04 16:04
源码解析
MyBatis源码解析
2-MapperRegistry
MapperProxy只会在mapper(dao)的方法被调用的时候,才会去调用invoke()方法发现MapperProxy#nvoke(Objectproxy,Methodmethod,Object[]args)每次都会被调用MapperRegistry只会在SpringBoot应用启动的过程中会调用addMapper()和getMapper()方法,在mapper方法被用户调用的时候,并不会
frankliu01
·
2019-09-03 23:16
源码解析
MyBatis源码解析
(六):执行SQL
通过前面
MyBatis源码解析
(五):获取SqlSeesion,调用sqlSession.getMapperUserMappermapper=session.getMapper(UserMapper.class
horseber
·
2019-08-24 17:07
MyBatis源码解析
MyBatis源码解析
(三):构建DataSource
上一篇文章,还剩environments对数据源解析,事务配置解析//1.2.4privatevoidenvironmentsElement(XNodecontext)throwsException{/***environments节点标签不为空才解析,*我们也可以不在mybatis-configuration.xml文件中配置标签,交给spring管理*/if(context!=null){//
horseber
·
2019-08-24 16:19
MyBatis源码解析
MyBatis源码解析
(二):构建sqlSessionFactory
publicstaticvoidmain(String[]args)throwsIOException{Stringresource="mybatis-config.xml";InputStreaminputStream=Resources.getResourceAsStream(resource);SqlSessionFactorysqlSessionFactory=newSqlSessionF
horseber
·
2019-08-24 16:58
MyBatis源码解析
MyBatis源码解析
(一):MyBatis使用示例
MyBatis源码解析
系列参考:http://www.mybatis.org/mybatis-3/zh/index.html和源码调试,加上画图理解首先在掌握一门技术前,先得知道它是是什么,怎么用。
horseber
·
2019-08-24 16:05
java
MyBatis源码解析
mybatis源码解析
第二课-mybatis总体架构设计
一、myabtis架构图要学习一个项目,或者说不管学习什么知识,首先你必须要先了解它的总体设计思想,在此基础上再去细分深入研究才能逐渐的去理解作者的意图,让你的学习事半功倍;1、功能流程层次描述MyBatis的整体架构图2、MyBatis源码包对应的架构图在应用启动的时候,MyBatis解析两种配置文件SqlMapConfig.xmlSqlMap.xmlSqlMapConfig.xml是在XMLC
hnlcwx2917
·
2019-07-21 21:54
mybatis
Mybatis源码解析
title:Mybatis源码分析1date:2018-7-914:18:40categories:-Mybatistags:-Mybatis摘要:Mybatis源码学习1暑假看完了《深入Mybatis技术原理》,在这里写了一点对Mybatis运行原理的一点总结。Mybatis的基本构成主要包含了下面几个重要的组件:SqlSessionFactoryBuilder这是一个构造器,他会根据我们配置单
coderlong
·
2019-06-05 19:42
java
MyBatis源码解析
一:运行原理1.SqlSessionFactory的创建及配置文件的解析首先通过配置文件的文件流创建SqlSessionFactoryBuilder对象调用build方法,传入文件流之后通过解析器解析xml配置文件通过XPathParse解析configuration节点,获取根节点,之后再parseConfiguration()方法中根据根节点解析根节点中的每一个节点之后来到settingsEl
彭大坤
·
2019-05-26 15:06
MyBatis
Mybatis源码解析
之SpringBoot集成mybatis-spring-boot-starter分析
Mybatis源码解析
之核心类分析
Mybatis源码解析
之初始化分析
Mybatis源码解析
之执行流程解析
Mybatis源码解析
之数据库连接和连接池
Mybatis源码解析
之事务管理
Mybatis源码解析
之缓存机制
翻身已碰头
·
2019-03-28 11:00
Mybatis
Mybatis源码解析
MyBatis源码解析
(一) Configuration 初始化
可以这么说,MyBatis初始化的过程,就是创建Configuration对象的过程。1Configuration介绍顾名思义,Configuration表示配置,该对象中维护了很多mybatis的配置参数。大致可分为四部分:环境变量(Environment)配置参数缓存集合插件及其他1.1环境变量(Environment)通过查看org.apache.ibatis.mapping.Environ
roylion
·
2019-03-21 00:00
mybatis
springboot集成下,mybatis的mapper代理对象究竟是如何生成的
前情回顾
Mybatis源码解析
-mapper代理对象的生成,你有想过吗,我们讲到了mybatis操作数据库的流程:先创建SqlSessionFactory,然后创建SqlSession,然后再创建获取mapper
youzhibing2904
·
2019-03-19 09:00
Mybatis源码解析
(二)
Mybatis源码解析
SqlSessionFactorysqlSessionFactory=newSqlSessionFactoryBuilder().build(inputStream);xml如何构建解析
熊人族无所畏惧
·
2019-03-11 22:01
java
mybatis
Mybatis源码解析
- mapper代理对象的生成,你有想过吗
前言开心一刻本人幼教老师,冬天戴帽子进教室,被小朋友看到,这时候,有个小家伙对我说:老师你的帽子太丑,赶紧摘了吧。我逗他:那你好好学习,以后给老师买个漂亮的?这孩子想都没想立刻回答:等我赚钱了,带你去韩国整形简单示例我们先来看一个纯粹的mybatis示例(不集成spring等其他框架),代码很简单,结构如下完整代码地址:mybatis;mapper层和我们平时说的dao层指的是同一个内容,都是数据
青石路
·
2019-03-07 09:00
Mybatis源码解析
之四 mybatis执行流程
目录一、缘起二、示例代码1、mybatis单独测试操作代码2、spring与mybatis的整合操作代码3、总结三、mybatis执行流程1、mybatis的架构设计图2、mybatis的执行流程图3、mybatis执行流程时序图4、Mybatis的核心组件5、mybatis执行流程的分析一、缘起前三篇的文章主要介绍了Mybatis配置以及在spring的中整合中核心组件SqlSessionFac
liushangzaibeijing
·
2019-01-21 19:40
mybatis源码分析
Mybatis源码解析
之二级缓存
前言:在上一篇文章
Mybatis源码解析
之一级缓存中分析了Mybatis一级缓存的使用及源码分析。本篇博客就继续从源码角度来分析关于Mybatis的二级缓存。
恐龙弟旺仔
·
2019-01-03 16:19
Mybatis
Mybatis源码解析
MyBatis源码解析
之日志记录
一.概述MyBatis没有提供日志的实现类,需要接入第三方的日志组件,但第三方日志组件都有各自的Log级别,且各不相同,但MyBatis统一提供了trace、debug、warn、error四个级别;自动扫描日志实现,并且第三方日志插件加载优先级如下:slf4J→commonsLoging→Log4J2→Log4J→JdkLog;日志的使用要优雅的嵌入到主体功能中;二.设计模式将各种日志组件如(s
小杨Java
·
2018-11-11 22:40
MyBatis
源码解析
java
mybatis源码解析
第四课-mybatis的SQL执行过程解析
目录前言mybatis重要类解析1、mybatis的sql执行代码总览2、创建session工厂实例解析3、创建session解析4、执行查询操作解析5、session关闭解析前言mybatis重要类解析Executor:SQL执行操作的接口定义;BaseExecutor:抽象类,内部实现了一级缓存,采用了模版模式设计;SimpleExecutor:sql操作的具体实现类,框架默认的执行器,直接操
hnlcwx2917
·
2018-10-28 22:28
mybatis
MyBatis源码解析
系列(四)--使用SqlSession去进行CRUD解析
阅读更多在源码解析篇三中,我们已经得到了SqlSession。长征已经走了一半,前途一片光明。此篇中我们要解析下如何使用SqlSession去进行CRUD(创建(Create)、查询(Retrieve)(重新得到数据)、更新(Update)和删除(Delete))。我们结合debug过程,逐渐深入源码解析。一、从getMapper说起在我们入门示例中,使用sqlSession.getMapper(
zhaodengfeng1989
·
2018-10-18 17:00
Mybatis
源码
CRUD
MyBatis源码解析
系列(四)--使用SqlSession去进行CRUD解析
阅读更多在源码解析篇三中,我们已经得到了SqlSession。长征已经走了一半,前途一片光明。此篇中我们要解析下如何使用SqlSession去进行CRUD(创建(Create)、查询(Retrieve)(重新得到数据)、更新(Update)和删除(Delete))。我们结合debug过程,逐渐深入源码解析。一、从getMapper说起在我们入门示例中,使用sqlSession.getMapper(
zhaodengfeng1989
·
2018-10-18 17:00
Mybatis
源码
CRUD
mybatis源码解析
第一课-mybatis源码导入idea运行
从本篇博客开始,进入mybatis的源码学习,本篇博客主要是讲解mybatis源码的下载,并将源码导入到idea,可以用来调试;一、下载mybatis源码版本:mybatis-3-mybatis-3.4.6.zip,下载地址:https://github.com/mybatis/mybatis-3通过查看mybatis的pom.xml文件,发现是一个聚合项目,依赖mybatis-parentorg
hnlcwx2917
·
2018-10-13 21:56
mybatis
MyBatis源码解析
系列(三)--从诞下SqlSession说起
阅读更多上一篇
MyBatis源码解析
系列中,我们说完了SqlSessionFactory的诞生过程。这一篇中,我们要根据SqlSessionFactory工厂去得到SqlSession。
zhaodengfeng1989
·
2018-10-11 16:00
Mybatis
源码
SqlSession
MyBatis源码解析
系列(三)--从诞下SqlSession说起
阅读更多上一篇
MyBatis源码解析
系列中,我们说完了SqlSessionFactory的诞生过程。这一篇中,我们要根据SqlSessionFactory工厂去得到SqlSession。
zhaodengfeng1989
·
2018-10-11 16:00
Mybatis
源码
SqlSession
MyBatis源码解析
系列(二)--从SqlSessionFactory诞生说起
阅读更多看过此篇,你就赚到了。别人写的源码系列,虽然有源码,但是没有关键的图示和debug过程,只是讲了有啥用,不适用。在我写的MyBatis源码系列中,都会结合debug过程+图示来阐述,我们从SqlSessionFactoryBuilder说起。SqlSessionFactoryBuilder,见名知意,是SqlSessionFactory的建造者(Builder)。那么我们猜想,既然是建造S
zhaodengfeng1989
·
2018-10-09 12:00
MyBatis
源码
mybatis
MyBatis源码解析
系列(二)--从SqlSessionFactory诞生说起
阅读更多看过此篇,你就赚到了。别人写的源码系列,虽然有源码,但是没有关键的图示和debug过程,只是讲了有啥用,不适用。在我写的MyBatis源码系列中,都会结合debug过程+图示来阐述,我们从SqlSessionFactoryBuilder说起。SqlSessionFactoryBuilder,见名知意,是SqlSessionFactory的建造者(Builder)。那么我们猜想,既然是建造S
zhaodengfeng1989
·
2018-10-09 12:00
MyBatis
源码
mybatis
上一页
1
2
3
4
5
6
下一页
按字母分类:
A
B
C
D
E
F
G
H
I
J
K
L
M
N
O
P
Q
R
S
T
U
V
W
X
Y
Z
其他