- 浏览: 183053 次
- 性别:
- 来自: 北京
最新评论
-
小黄牛:
基于支付系统真实场景的分布式事务解决方案效果演示:http:/ ...
spring 7 种分布式事务实现 -
blue2048:
看看两个实例的端口要不一样,另外,看看日志提示有没有错误
elasticsearch 单机部署 集群 -
mtsw2011:
我改了# Set the bind address speci ...
elasticsearch 单机部署 集群
文章列表
HTTP消息由客户端到服务器的请求和服务器到客户端的响应组成。请求消息和响应消息都是由开始行(对于请求消息,开始行就是请求行,对于响应消息,开始行就是状态行),消息报头(可选),空行(只有CRLF的行),消息正文(可选)组成。HTTP消息报头包括普通报头、请求报头、响应报头、实体报头。每一个报头域都是由名字+“:”+空格+值 组成,消息报头域的名字是大小写无关的头标由主键/值对组成。它们描述客户端或者服务器的属性、被传输的资源以及应该实现连接 1.通用头标:即可用于请求,也可用于响应,是作为一个整体而不是特定资源与事务相关联。 2.请求头标:允许客户端传递关于自身的信息和希望的响 ...
转自 http://www.cnblogs.com/ITtangtang/p/3978349.html#a4
Spring:源码解读Spring IOC原理
Spring IOC设计原理解析:本文乃学习整理参考而来
转自 http://blog.csdn.net/jiangguilong2000/article/details/14606685
最近开始优化页游服务端的性能,一些心得总结一下。现在的服务器硬件越来越好,几十G内存,十几个CPU。当硬件不是瓶颈的时候,如果让程序发挥最大效用就成了我们 ...
转自 http://blog.csdn.net/hupanfeng/article/details/9265341
Mybatis的分页功能很弱,它是基于内存的分页(查出所有记录再按偏移量和limit取结果),在大数据量的情况下这样的分页基本上是没有用的。本文基于插件,通过拦截StatementHandler重写sql语句,实现数据库的物理分页。本文适配的mybatis版本是3.2.2。
准备
为什么在StatementHandler拦截
在深入浅出MyBatis-Sqlsession章节介绍了一次sqlsession的完整执行过程,从中可以知道sql的解析是在Statem ...
转自 http://blog.csdn.net/hupanfeng/article/details/9320665
本文提供了一种自动生成sql语句的方法,它针对的对象是有主键或唯一索引的单表,提供的操作有增、删、改、查4种。理解本文和本文的提供的代码需要有java注解的知识,因为本文是基于注解生成sql的。本文适配的mybatis版本是3.2.2。
准备
为什么在StatementHandler拦截
在深入浅出MyBatis-Sqlsession章节介绍了一次sqlsession的完整执行过程,从中可以知道sql的解析是在StatementHandler里完成的,所以为了 ...
转自 http://blog.csdn.net/hupanfeng/article/details/16950161
为了方便修改BUG,我在github上创建了一个仓库,地址:https://github.com/hupanfeng/hdd。欢迎大家在留言里提交问题,我会尽快修复,并将修复的代码提交至github上。
在前面的文章里,我开发了两个插件:根据注解实现的sql自动生成插件和分页插件。这两个插件在没有开启cache的情况下可以很好的使用,但开启cache后却出现了一些问题,为了解决这些问题,我编写了拦截cache的插件,通过这个拦截器修正了这些问题。
问题
...
转自 http://blog.csdn.net/hupanfeng/article/details/21454847
单独使用mybatis是有很多限制的(比如无法实现跨越多个session的事务),而且很多业务系统本来就是使用spring来管理的事务,因此mybatis最好与spring集成起来使用。
前置要求
版本要求
项目
版本
下载地址
说明
mybatis
3.0及以上
https://github.com/mybatis/mybatis-3/releases
sp ...
转自 http://blog.csdn.net/hupanfeng/article/details/9247379
Mybatis采用责任链模式,通过动态代理组织多个拦截器(插件),通过这些拦截器可以改变Mybatis的默认行为(诸如SQL重写之类的),由于插件会深入到Mybatis的核心,因此在编写自己的插件前最好了解下它的原理,以便写出安全高效的插件。
代理链的生成
Mybatis支持对Executor、StatementHandler、PameterHandler和ResultSetHandler进行拦截,也就是说会对这4种对象进行代理。下面以Executor为例。Myba ...
转自 http://blog.csdn.net/hupanfeng/article/details/9238127
前面的章节主要讲mybatis如何解析配置文件,这些都是一次性的过程。从本章开始讲解动态的过程,它们跟应用程序对mybatis的调用密切相关。本章先从sqlsession开始。
创建
正如其名,Sqlsession对应着一次数据库会话。由于数据库回话不是永久的,因此Sqlsession的生命周期也不应该是永久的,相反,在你每次访问数据库时都需要创建它(当然并不是说在Sqlsession里只能执行一次sql,你可以执行多次,当一旦关闭了Sqlsession就需要重新创 ...
转自 http://blog.csdn.net/hupanfeng/article/details/9098453
上一章节说道,解析mybatis的配置文件的最后一步是解析mapper元素。每个mapper元素对应一个mapper配置文件,这一章节就来讲讲这个mapper配置文件是如何解析的。
Mapper文件里有什么
mapper配置文件是配置sql映射的地方,它看起来就像下面这个样子:
[html] view plaincopy
转自 http://blog.csdn.net/hupanfeng/article/details/9080545
Configuration是干嘛的
Configuration就像是Mybatis的总管,Mybatis的所有配置信息都存放在这里,此外,它还提供了设置这些配置信息的方法。Configuration可以从配置文件里获取属性值,也可以通过程序直接设置。Configuration里可供配置的属性有:
1. properties属性
1) 配置示例
[html] view plaincopy
转自 http://blog.csdn.net/hupanfeng/article/details/9068003
简介
MyBatis的前身叫iBatis,本是apache的一个开源项目, 2010年这个项目由apache software foundation 迁移到了google code,并且改名为MyBatis。MyBatis是支持普通SQL查询,存储过程和高级映射的优秀持久层框架。MyBatis消除了几乎所有的JDBC代码和参数的手工设置以及结果集的检索。MyBatis使用简单的XML或注解用于配置和原始映射,将接口和Java的POJOs(Plan Old Java O ...
spring将事务和底层数据库操作分离,产生两个问题
第一个问题,事务代码的抽离;
第二个问题,数据连接的统一;
前面分析了第一个问题,现在看看第二个问题。
JDBC,事务的是附着在Connection对象上的,Connection对象同事是insert,update,delete数据库操作的对象,事务和操作数据库的Connection必须是同一个,才能起作用
在spring事务框架中,我们看看是如何统一的。
首先在开启JDBC事务时,需要获得JDBC链接,可以看到获取newCon后,DataSourceTransactionManager将newCon以datasourc ...
在spring的事务运行过程中,需要保存一些状态,涉及的一些对象如下
1. TransactionSynchronizationManager
2. SuspendedResourcesHolder
3. DefaultTransactionStatus
底层以JDBC DataSourceTransactionManager为例,状态对象
1. DataSourceTransactionObject
2. ConnectionHolder
下面逐一进行分析说明
TransactionSynchronizationManager-使用TreadLocal记录事务 ...
首先介绍下DataSourceTransactionObject这个类,它是DataSourceTransactionManager的事务句柄,用于和AbstractPlatformTransactionManager接口方法之间的交互数据传递
下面介绍DataSourceTransactionManager各个方法,解析见注释
1. doGetTransaction
//产生一个DataSourceTransactionObject对象,其中持有ConnectionHolder(从ThreadLocale中拿,可能已经存在这个对象)
protected Object doGet ...