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源码分析
(Mapper动态代理的实现及执行流程)
首先简单回顾下代理模式静态代理概念:是由程序员创建或工具生成代理类的源码,再编译代理类。所谓静态也就是在程序运行前就已经存在代理类的字节码文件,代理类和委托类的关系在运行前就确定了。简单代码演示:抽象接口:真实角色:代理角色:测试使用:动态代理概念:是在实现阶段不用关心代理类,而在运行阶段才指定哪一个对象。在jdk的api中提供了java.lang.reflect.Proxy它可以帮助我们完成动态
Dongguabai
·
2018-08-27 01:48
design
pattern
mybatis
Mybatis源码分析
——参数处理
Mybatis源码分析
——参数处理前言在查看mybatis源码的时候,只看了处理接口参数那一块,却没有查看后期处理完接口参数的过程(同时也是处理通过SqlSession调用命名空间,如下图所示),通过看了深入了解
Bug如风常伴吾身
·
2018-07-19 23:36
Java
Mybatis
mybatis 源码分析(四) 自带连接池-
mybatis源码分析
(四)自带连接池
mybatis源码分析
(一)Xml解析,容器初始化
mybatis源码分析
(二)sql执行路径分析
mybatis源码分析
(三)插件原理
mybatis源码分析
(四)自带连接池
sunla198910
·
2018-06-27 14:56
java
mybatis
Mybatis源码分析
之(八)Mybatis事务管理机制
JdbcTransactionManagedTransaction事务指作为单个逻辑工作单元执行的一系列操作,要么完全地执行,要么完全地不执行。对于数据库操作来说是必不可少的。在Mybatis框架中有二种事务实现,一种是JdbcTransaction,另一种是ManagedTransaction。他们的配置都是通过environment中的transactionManager标签来配置的。加载过程
晓_晨
·
2018-06-18 23:47
mybatis
mybatis源码分析
三之SqlSession
SqlSessionSqlSession下的四大对象ExecutorStatementHandlerparamsHandlerresultSetHandlerSqlSessionSqlSession是一个会话,相当于jdbc的Connection对象,生命周期应该是请求数据库处理事务的过程中。它是非线程安全的,在每次创建SqlSession都必须及时关闭它,它长期存在就会使数据库连接池的活动资源减
jannals
·
2018-06-10 10:33
#
mybatis
mybatis
sqlSession
Executor
Mybatis源码分析
之(七)Mybatis一级缓存和二级缓存的实现
一级缓存二级缓存总结对于一名程序员,缓存真的很重要,而且缓存真的是老生常谈的一个话题拉。因为它在我们的开发过程中真的是无处不在。今天LZ带大家来看一下。Mybatis是怎么实现一级缓存和二级缓存的。(自带的缓存机制)一级缓存存在BaseExecutor中,是全局的缓存,每次查询后将值存入BaseExecutor的localCache中。key是由ms,parameter,rowBounds和bou
晓_晨
·
2018-06-07 22:51
mybatis
Mybatis源码分析
之(六)mybatis拦截器(Interceptor)的实现原理
前言InterceptorChain保存所有的Interceptor创建四大对象都走ConfigurationInterceptorChain增强对象方法Plugin封装动态代理,让你使用Mybatis拦截器更简单Invocation,让我们能在拦截器中使用动态代理类中的invoke方法中的对象调用时序图小结前言mybatis拦截器是一个非常有用的功能,当你想实现自动分页,自动记录执行的sql等功
晓_晨
·
2018-05-28 16:30
mybatis
MyBatis源码分析
-MapperProxy
在MyBatis中,Mapper是一个接口,不是实体类。而在Java中,接口是无法运行的,所以MyBatis运用了动态代理模式来运行Mapper接口。关于动态代理,可以看这篇深度解析JDK动态代理。MyBatis首先创建了一个MapperProxy类,实现了InvocationHandler接口。就相当于上篇文章的MyHandler类。由于动态代理只能代理有接口实现的类。需要传入要代理的接口,所以
Damon__Wang
·
2018-05-07 17:43
MyBatis
Mybatis源码分析
(二):源码分析入口引导
如果没看
Mybatis源码分析
(一):源码准备工作,再看本节1.引导进入spring的源码首先是mybatis对xml文件进行解析,那么这个解析的关键配置就是classpath*:com/zzy/xml
程序员YONG
·
2018-05-03 10:29
mybatis源码分析
Mybatis源码第一篇:sqlSessionFactory创建流程
网络上也有两本书:《深入浅出Mybatis技术原理与实战》,《Mybatis从入门到精通》网络博客地址:
Mybatis源码分析
、Mybatis系列纸上得来终觉浅,绝知此事要躬行于是开启了我的
Mybatis
cjp1016
·
2018-04-19 17:52
mybatis 源码分析(三) 拦截器原理
mybatis源码分析
(三)插件原理
mybatis源码分析
(一)Xml解析,容器初始化
mybatis源码分析
(二)sql执行路径分析
mybatis源码分析
(三)拦截器原理
mybatis源码分析
(四)自带连接池在使用
sunla198910
·
2018-03-14 16:23
java
mybatis
Mybatis源码分析
——运行原理及流程
阅读更多可以参考微信公众号中的文章,格式比较清晰,链接:http://mp.weixin.qq.com/s/eZpFfLtpJ4zE24HLYliUyA欢迎关注微信公众号1、配置配置文件,扫描mapper文件2、配置SqlSessionFactoryBean(创建mybatis的工厂类),这里dataSource的配置就不贴出来了SqlSessionFactoryBean类afterPropert
IT小将
·
2018-03-09 15:00
mybatis 源码分析(一) Xml解析,容器初始化
mybatis源码分析
(一)Xml解析,mapperbean初始化
mybatis源码分析
(二)sql执行路径分析
mybatis源码分析
(三)插件原理
mybatis源码分析
(四)自带连接池mybatismybatis
sunla198910
·
2018-03-08 15:02
java
mybatis
Mybatis源码分析
[05.Configuration]
Mybatis的配置类publicclassConfiguration{//环境protectedEnvironmentenvironment;//---------节点-------protectedbooleansafeRowBoundsEnabled=false;protectedbooleansafeResultHandlerEnabled=true;protectedbooleanmap
IMUKL8
·
2017-12-11 19:39
mybatis
Configuration
Executor
MYBATIS
mybatis源码分析
-数据库连接池(二)
Mybatis作为持久化框架,datasource是必不可少的,对应的自然少不了连接池,常用的数据库连接池有c3p0、BasicDatasource、druid。我们一起去看看数据源类图一波带走不谢PooledDatasource和UnpooledDataSource是mybatis自定义数据源,从下图不难看出,下面是一个工厂方法。不同的工厂创建其对应的数据源mybatis数据源类图工厂模式场景文
_我啥也不会
·
2017-12-10 14:37
Mybatis源码分析
[04.SqlSession]
/***这是MyBatis用来执行SQL的类,获取映射器,管理事务**/publicinterfaceSqlSessionextendsCloseable{/***Retrieveasinglerowmappedfromthestatementkey*根据指定的SqlID获取一条记录的封装对象*@paramthereturnedobjecttype封装之后的对象类型*@paramstatement
IMUKL8
·
2017-12-06 16:36
mybatis
源码分析
SqlSession
MYBATIS
Mybatis源码分析
[03.SqlSessionFactory]
//构造SqlSessionpublicinterfaceSqlSessionFactory{//8个方法可以用来创建SqlSession实例SqlSessionopenSession();//自动提交SqlSessionopenSession(booleanautoCommit);//连接SqlSessionopenSession(Connectionconnection);//事务隔离级别Sq
IMUKL8
·
2017-12-06 13:14
mybatis
源码分析
SqlSession
MYBATIS
Mybatis源码分析
[02.XMLConfigBuilder]
//BaseBuilder属性publicabstractclassBaseBuilder{//需要配置,类型别名注册,类型处理器注册3个东西protectedfinalConfigurationconfiguration;protectedfinalTypeAliasRegistrytypeAliasRegistry;protectedfinalTypeHandlerRegistrytypeHa
IMUKL8
·
2017-12-06 13:40
mybatis
源码分析
XML
MYBATIS
Mybatis源码分析
之Spring与Mybatis整合MapperScannerConfigurer处理过程源码分析
前面文章分析了这么多关于Mybatis源码解析,但是我们最终使用的却不是以前面文章的方式,编写自己mybatis_config.xml,而是最终将配置融合在spring的配置文件中。有了前面几篇博客的分析,相信这里会容易理解些关于Mybatis的初始化及其执行,但是仍旧需要Spring的很多知识,用到的时候会简略提到下。下面先看下我们具体使用Mybatis时候是怎样配置的。-->mysql这就是使
ccityzh
·
2017-09-03 23:14
spring
mybatis
源码
动态代理
MyBatis
Spring
【
MyBatis源码分析
】插件实现原理
MyBatis插件原理----从解析开始本文分析一下MyBatis的插件实现原理,在此之前,如果对MyBatis插件不是很熟悉的朋友,可参看此文MyBatis7:MyBatis插件及示例----打印每条SQL语句及其执行时间,本文我以一个例子说明了MyBatis插件是什么以及如何实现。由于MyBatis的插件已经深入到了MyBatis底层代码,因此要更好地使用插件,必须对插件实现原理及MyBati
五月的仓颉
·
2017-06-11 16:00
【
MyBatis源码分析
】select源码分析及小结
示例代码之前的文章说过,对于MyBatis来说insert、update、delete是一组的,因为对于MyBatis来说它们都是update;select是一组的,因为对于MyBatis来说它就是select。本文研究一下select的实现流程,示例代码为:1publicvoidtestSelectOne(){2System.out.println(mailDao.selectMailById(
五月的仓颉
·
2017-06-11 12:00
【
MyBatis源码分析
】insert方法、update方法、delete方法处理流程(下篇)
Configuration的newStatementHandler分析SimpleExecutor的doUpdate方法上文有分析过:1publicintdoUpdate(MappedStatementms,Objectparameter)throwsSQLException{2Statementstmt=null;3try{4Configurationconfiguration=ms.getCo
五月的仓颉
·
2017-06-07 09:00
【
MyBatis源码分析
】insert方法、update方法、delete方法处理流程(上篇)
打开一个会话Session前文分析了MyBatis将配置文件转换为Java对象的流程,本文开始分析一下insert方法、update方法、delete方法处理的流程,至于为什么这三个方法要放在一起说,是因为:从语义的角度,insert、update、delete都是属于对数据库的行进行更新操作从实现的角度,我们熟悉的PreparedStatement里面提供了两种execute方法,一种是exec
五月的仓颉
·
2017-05-09 12:00
【
MyBatis源码分析
】Configuration加载(下篇)
元素设置继续MyBatis的Configuration加载源码分析:1privatevoidparseConfiguration(XNoderoot){2try{3Propertiessettings=settingsAsPropertiess(root.evalNode("settings"));4//issue#117readpropertiesfirst5propertiesElement(
五月的仓颉
·
2017-05-08 18:00
【
MyBatis源码分析
】Configuration加载(上篇)
config.xml解析为org.w3c.dom.Document本文首先来简单看一下MyBatis中将config.xml解析为org.w3c.dom.Document的流程,代码为上文的这部分:1static{2try{3reader=Resources.getResourceAsReader("mybatis/config.xml");4ssf=newSqlSessionFactoryBui
五月的仓颉
·
2017-05-06 10:00
SprignMVC+myBatis整合+
mybatis源码分析
+动态代理实现流程+如何根据mapper接口生成其实现类
首先熟悉三个概念:SqlSessionFactoryBean–为整合应用提供SqlSession对象资源MapperFactoryBean–根据指定的Mapper接口生成Bean实例MapperScannerConfigurer–根据指定包批量扫描Mapper接口并生成实例SqlSessionFactoryBean:在单独使用MyBatis时,所有操作都是围绕SqlSession展开的,SqlSe
starryninglong
·
2017-04-03 16:30
mybatis
java
spring
mybatis
mapper
jdk动态代理
源码分析
springmvc
MyBatis源码分析
——Cache构建以及应用
SqlSession使用缓存流程如果开启了二级缓存,而Executor会使用CachingExecutor来装饰,添加缓存功能,该CachingExecutor会从MappedStatement中获取对应的Cache来使用。(注:MappedStatement中有保存相关联的Cache)在使用SqlSession向DB查询数据时,如果开启了二级缓存,则会优先从二级缓存中获取数据,没有命中的话才会去
maokao8053
·
2017-03-29 12:07
Mybatis源码分析
--关联表查询及延迟加载原理(二)
阅读更多在上一篇博客
Mybatis源码分析
--关联表查询及延迟加载(一)中我们简单介绍了Mybatis的延迟加载的编程,接下来我们通过分析源码来分析一下Mybatis延迟加载的实现原理。
king_tt
·
2017-01-03 20:00
Mybatis源码分析
--关联表查询及延迟加载(一)
阅读更多Mybatis提供了关联查询映射的功能。一、一对一关联实体类如下:Users表对应的实体类:publicclassUser{privateintid;privateStringnames;privateintage;privateTeacherteacher;......getXxx和setXxx方法}Teacher表对应的实体类:publicclassTeacher{privateint
king_tt
·
2017-01-03 20:00
Mybatis源码分析
之存储过程调用和运行流程
这一篇我们学习一下Mybatis调用存储过程的使用和运行流程。首先我们先创建一个简单的存储过程DELIMITER$CREATEPROCEDUREmybatis.ges_user_count(INageINT,OUTuser_countINT)BEGINSELECTCOUNT(*)FROMusersWHEREusers.age=ageINTOuser_count;END$这个存储过程的含义其实比较简
IAMTJW
·
2016-11-17 13:52
Mybatis源码分析
(一)- Configuration配置文件详解
本系列以Mybatis3.3.X分支源码作为分析源,mybatis源码git地址:https://github.com/mybatis/mybatis-3.git。mybatis的所有配置信息都存储到org.apache.ibatis.session.Configuration类中,可通过xml配置或者手动实例化获取到Configuration信息。一、Configuration属性详解Confi
奔跑的树叶
·
2016-11-10 16:15
mybatis
MyBatis源码分析
-MyBatis初始化流程
如何新建MyBatis源码工程请点击
MyBatis源码分析
-IDEA新建MyBat
luoxn28
·
2016-10-26 22:00
MyBatis源码分析
-SQL语句执行的完整流程
如何新建MyBatis源码工程请点击
MyBatis源码分析
-IDEA新建MyBat
luoxn28
·
2016-10-06 08:00
MyBatis源码分析
-IDEA新建MyBatis源码工程
MyBatis是支持定制化SQL、存储过程以及高级映射的优秀的持久层框架。MyBatis避免了几乎所有的JDBC代码和手动设置参数以及获取结果集。MyBatis可以对配置和原生Map使用简单的XML或注解,将接口和Java的POJOs(PlainOldJavaObjects,普通的Java对象)映射成数据库中的记录。项目GitHub地址下载MyBatis源码,导入到IDEA工程(Maven工程)中
luoxn28
·
2016-10-03 18:00
mybatis源码分析
----数据库连接池----连接池概述
mybatis是使用数据库连接池的,如果不使用数据库连接池,那么耗费的时间太长了,比如:你链接一个mysql数据库建立连接需要的时间为:526毫秒,但是查询的时间只要3-4毫秒,如果Connection使用一次就丢掉,真的是浪费时间和性能,就像打电话一样子,说一句你好就挂断,真的是浪费时间,所以,mybatsi使用了资源的池子的策略。简单来说:就是给你一个资源的池子,里面有资源,你使用的时候就去池
linux-lx
·
2016-05-29 14:42
mybatis源码阅读
【
mybatis源码分析
】原理分析之四:一次SQL查询的源码分析
上回我们讲到Mybatis加载相关的配置文件进行初始化,这回我们讲一下一次SQL查询怎么进行的。 准备工作Mybatis完成一次SQL查询需要使用的代码如下:Stringresource="mybatis.cfg.xml"; Readerreader=Resources.getResourceAsReader(resource); SqlSessionFactoryssf=newSqlSessio
sully2008
·
2016-05-09 15:00
【
mybatis源码分析
】原理分析之三:初始化(配置文件读取和解析)
1.准备工作 编写测试代码(具体请参考《Mybatis入门示例》),设置断点,以Debug模式运行,具体代码如下: Stringresource="mybatis.cfg.xml"; Readerreader=Resources.getResourceAsReader(resource); SqlSessionFactoryssf=newSqlSessionFactoryBuilder().
sully2008
·
2016-05-09 15:00
【
mybatis源码分析
】原理分析之二:框架整体设计
1.引言本文主要讲解Mybatis的整体程序设计,理清楚框架的主要脉络。后面文章我们再详细讲解各个组件。 2.整体设计2.1总体流程(1)加载配置并初始化 触发条件:加载配置文件 配置来源于两个地方,一处是配置文件,一处是Java代码的注解,将SQL的配置信息加载成为一个个MappedStatement对象(包括了传入参数映射配置、执行的SQL语句、结果映射配置),存储在内存中。
sully2008
·
2016-05-09 15:00
源码
框架
mybatis
设计
【
mybatis源码分析
】原理分析之一:从JDBC到Mybatis
1.引言本文主要讲解JDBC怎么演变到Mybatis的渐变过程,重点讲解了为什么要将JDBC封装成Mybaits这样一个持久层框架。再而论述Mybatis作为一个数据持久层框架本身有待改进之处。 2.JDBC实现查询分析我们先看看我们最熟悉也是最基础的通过JDBC查询数据库数据,一般需要以下七个步骤:(1) 加载JDBC驱动(2) 建立并获取数据库连接(3) 创建 JDBCStatemen
sully2008
·
2016-05-09 15:00
mybatis源码分析
之SqlSession的创建过程
mybatis之SqlSessionFactory
mybatis源码分析
之Configuration
mybatis源码分析
之事务管理器以上是之前的分析,在
mybatis源码分析
之事务管理器里分析到了事务管理器
udbwcso
·
2016-04-21 17:00
mybatis
源码分析
二级缓存
SqlSession
executor
mybatis源码分析
之事务管理器
mybatis之SqlSessionFactory主要分析了SqlSessionFactory的构建过程.
mybatis源码分析
之Configuration主要分析了构建SqlSessionFactory
udbwcso
·
2016-04-20 16:00
jdbc
mybatis
事务
源码分析
事务管理器
mybatis源码分析
之Configuration
上一篇mybatis之SqlSessionFactory:http://my.oschina.net/u/657390/blog/653637上一篇对mybatis中SqlSessionFactory的创建过程进行了分析,从之前的分析可以看出创建过程中比较重要的一部分是Configuration,这一篇将重点分析配置文件的读取.以官方的例子来进行分析.mybatis-config.xml是myba
udbwcso
·
2016-04-18 11:00
设计模式
mybatis
configuration
源码分析
解析xml
Mybatis源码分析
之执行完整分析
在上一篇中我们已经分析到了我们返回的Mapper其实是个代理对象,StudentMapperstudentMapper=sqlSession.getMapper(StudentMapper.class);Liststudents=studentMapper.findAllStudents();studentMapper.findAllStudents();这里就会触发代理类中Invoke方法,在I
li563868273
·
2016-04-01 21:21
mybatis
mybatis
Mybatis源码分析
之执行完整分析
在上一篇中我们已经分析到了我们返回的Mapper其实是个代理对象,StudentMapperstudentMapper=sqlSession.getMapper(StudentMapper.class); Liststudents=studentMapper.findAllStudents();studentMapper.findAllStudents();这里就会触发代理类中Invoke方法,在
li563868273
·
2016-04-01 21:00
mybatis
Mybatis源码分析
获取Mapper
这次分析的入口是StudentMapperstudentMapper=sqlSession.getMapper(StudentMapper.class);根据上篇分析我们这里获得的sqlSession是DefaultSqlSession,publicclassDefaultSqlSessionimplementsSqlSession{ privateConfigurationconfigurati
li563868273
·
2016-04-01 17:00
mybatis
好的博客、文章收藏--持续更新中
TortoiseSVN中分支和合并实践:点击打开链接手把手教你使用Git:点击打开链接 Spring基于注解TestContext测试框架使用详解:点击打开链接Spring系列:Spring框架简介:点击打开链接
mybatis
JohnCusack
·
2016-01-12 14:26
mybatis源码分析
(1)——SqlSessionFactory实例的产生过程
在使用mybatis框架时,第一步就需要产生SqlSessionFactory类的实例(相当于是产生连接池),通过调用SqlSessionFactoryBuilder类的实例的build方法来完成。下面具体对这一过程涉及的源码进行分析。 首先用Eclipse工具查看SqlSessionFactoryBuilder类的Outline视图: &
·
2015-11-13 19:10
sessionFactory
mybatis源码分析
(3)——SqlSessionManager类
从上图可能看出,在 mybatis中,SqlSession的实现类有两个,其中SqlSessionManager类不但实现了SqlSession接口,同时也实现了SqlSessionFactory接口。那么SqlSessionManager类究竟有何作用 ? 由于源码中缺少注释,所以从mybatis目前的提供官方文档来看,似乎该类已被弃用,其功能被DefaultS
·
2015-11-13 19:54
SqlSession
mybatis源码分析
(2)——事务概述
这篇文章主要对mybatis中的事务做一简单的分析,帮助读者理清一些概念。 先来看看在JAVA事务的相关技术,在JAVA中有两类事务,JDBC事务和JTA事务,如果是JDBC类型的事务,则是由Connection类来控制的。如果创建一个Connection对象时,没有显示调用 setTransactionIsolation(int level) 方法,则Connection
·
2015-11-13 19:53
mybatis
MyBatis源码分析
(三)-SqlSession理解
SqlSession理解一、创建SqlSession1.创建事务a.事务工厂根据DataSource创建一个事务对象(Connection对象,事务级别,是否自动提交)b.事务工厂根据Connection创建一个事务对象(事务级别和是否自动提交已经被设置在Connection对象中)c.系统默认的事务工厂是ManagedTransactionFactory,默认是关闭连接的privateboole
傳_奇
·
2015-07-16 10:00
上一页
3
4
5
6
7
8
9
10
下一页
按字母分类:
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
其他