1. 前提
好长时间不写博客了,应该吐槽,写点什么东西了!最近在研究数据库读写分离,分表分库的一些东西。其实这个问题好早之前就想好,只是以前使用hibernate,难点是不好判断什么样的sql走读库,什么样的sql走主库?用正则匹配开头或许可以,/^select 没想出什么好的解决方法,mybatis就不一样了,mappedstatement有commandtype属性,象select,update,delete等类型,为实现读写分离打下来良好的基础。
2. 解决方法
LazyConnectionProxy + RoutingDataSource + Plugin
在SqlSessionTemplate,创建DefaultSqlSession的时候,使用connection proxy的代理,这时并没有真正的获取connection,因为我们不知道是要取读还是写的数据源。待到StatementHandler的prepare()使用connection创建PreparedStatement的时候再根据mappedstatement的commandType去路由获取真实的connection。
RoutingDataSource支持一主一从,或者一主多从并采用round robin的方式简单负载均衡,预留接口路由和负载均衡策略可自定义。
不支持事务,适合auto commit为true的场景。表述能力不强,有兴趣的可以看看代码,欢迎拍砖!
http://code.google.com/p/rwmybatis/
分享到:
相关推荐
基于SpringMVC+Spring+MyBatis+Maven项目案例源码+数据库.zip 基于SpringMVC+Spring+MyBatis+Maven项目案例源码+数据库.zip 基于SpringMVC+Spring+MyBatis+Maven项目案例源码+数据库.zip 基于SpringMVC+Spring+...
"spring+hibernate和spring+myBatis实现连接多个数据库,同时操作的项目"是针对这种需求的一个解决方案,旨在提供一种灵活且动态的数据源切换机制。 首先,Spring框架作为Java领域中最受欢迎的应用框架之一,其强大...
Java基于Spring+SpringMVC+MyBatis实现的学生信息管理系统源码,SSM+Vue的学生管理系统。 Java基于Spring+SpringMVC+MyBatis实现的学生信息管理系统源码,SSM+Vue的学生管理系统。 Java基于Spring+SpringMVC+...
开发者可以通过学习这个项目,理解如何在实际项目中结合这些技术实现数据库读写分离,提升系统的并发处理能力和稳定性。 总结来说,Spring、SpringMVC、MyBatis和Maven是Java开发中的常见工具,它们共同构建了一个...
spring +springboot+mybatis+maven 读写分离,数据库采用mysql, 采用springboot 采用项目框架搭建,继承spring 中的AbstractRoutingDataSource,实现 determineCurrentLookupKey 进行数据源的动态切换,采用Spring ...
总的来说,"struts2+spring+mybatis+easyui"的实现是一个标准的Java Web项目结构,它利用Maven进行构建管理,通过整合四个组件,实现了后端的业务逻辑处理、数据访问和前端的用户界面展示。这种架构在实际开发中具有...
SSM(spring+spring MVC+mybatis)开发学生信息后台管理系统,实现学生增删改查...spring+spring mvc+mybatis+jquery 数据库文件 压缩包根目录test3\dbyyx.sql jar包文件 压缩包根目录\test3\WebContent\WEB-INF\lib
在现代Web应用开发中,数据库读写分离和缓存技术是提高...通过以上组件的整合,项目能够实现高效、稳定的数据库读写分离和缓存策略,从而提高系统的响应速度和并发处理能力。同时,这种架构也便于后期的维护和扩展。
springboot+mybatis+mysql实现读写分离 先在建好mysql主从数据库的配置,然后在代码中根据读写分离或强制读取master数据库中的数据 mysql数据库设置主从,参考: ...
总的来说,"spring+spring mvc+mybatis框架整合实现超市货物管理系统"是一个涵盖后端开发基础技能的项目,涉及了JavaEE的多个层面,从Web层的路由处理,到业务逻辑的实现,再到数据库操作,以及用户认证和分页显示等...
而 MyBatis 是一个轻量级的持久层框架,它简化了数据库操作,通过 SQL 映射文件实现了数据访问的解耦。 Spring 框架是 Java 企业级应用的基石,它允许开发者以声明式的方式管理对象及其依赖关系,通过 IoC...
使用环境:MyEclipse/Eclipse + Tomcat + MySQL。...使用技术:Spring MVC + Spring + MyBatis 或 JSP + Servlet + JavaBean + JDBC。 演示地址:https://ymjin.blog.csdn.net/article/details/120991940
Struts+Spring+Mybatis+EasyUI(jQuery)注解案例。采用注解的方式跟踪代码依赖性,实现替代配置文件功能。里面包含了平时用的增删改查及分页,分页查询时用的是存储过程,提高了数据库的性能。代码简单、易懂。
本项目以"springboot+mybatis-plus+shardingsphere 实现读写分离"为主题,结合了Spring Boot的快速开发能力、MyBatis-Plus的简化数据操作以及ShardingSphere的分布式数据库解决方案,旨在提高系统的读取性能和可扩展...
在注册功能中,MyBatis的SQL映射文件将定义插入新用户的SQL语句,当Spring管理的Service层对象调用这些映射时,MyBatis会执行相应的数据库操作,将用户信息存入数据库。 Maven是项目管理和构建工具,它通过配置文件...
"SpringMvc+Spring+Mybatis+Maven+注解方式"是一个经典的Java后端技术栈,它整合了四个关键组件,为开发人员提供了强大的工具和框架支持。下面将详细讲解这四个组件及其整合方式。 1. **Spring Framework**: ...
SSM(Spring MVC + Spring + MyBatis)是Java Web开发中常见的三层架构组合,它将Spring MVC作为表现层框架,Spring作为业务层容器,MyBatis作为数据访问层框架。下面将详细介绍这三个组件以及它们如何协同工作。 *...
本资源提供的"SpringMvc+Spring+MyBatis+Maven整合视频源码+数据库"是针对这四个框架的集成实践,通过源码分析,有助于开发者深入理解它们的协同工作方式。 Spring MVC 是Spring框架的一部分,它作为控制器,负责...
毕设项目:基于spring+mybatis实现高并发秒杀系统,包含详细笔记 毕设项目:基于spring+mybatis实现高并发秒杀系统,包含详细笔记 毕设项目:基于spring+mybatis实现高并发秒杀系统,包含详细笔记 毕设项目:基于...
基于SpringMVC+Spring+MyBatis的博客网站系统源码+数据库+使用说明(毕业设计)基于SpringMVC+Spring+MyBatis的博客网站系统源码+数据库+使用说明(毕业设计)基于SpringMVC+Spring+MyBatis的博客网站系统源码+...