Java下一个简单的数据库分库帮助类
简介
项目介绍



使用shardingcore
我们假设要对user进行分库,分3个库



<!-- aop配置,主要是拦截dao层的方法 -->
<aop:config>
<aop:pointcut
expression="execution(public * com.sharpframework.test.repository.*Dao.*(..)) and @annotation(com.sharpframework.shardingcore.shardingannotation.Sharding)"
id="shardingpoint"/>
<aop:aspect id="adviceRespect" ref="sharding" order="1">
<aop:before pointcut-ref="shardingpoint" method="shardingDB"/>
<aop:after pointcut-ref="shardingpoint" method="cleanshardingDB"/>
</aop:aspect> </aop:config> <bean id="sharding" class="com.sharpframework.shardingcore.ShardingDBAspect"></bean> <!-- 因为会有多个数据库连接,所有会有一个抽象连接 配置可以从外部文件读取-->
<bean id="db" class="com.alibaba.druid.pool.DruidDataSource"
destroy-method="close" abstract="true">
<!-- 初始化连接大小 -->
<property name="initialSize" value="${initialSize}"></property>
<!-- 连接池最大数量 -->
<property name="maxActive" value="${maxActive}"></property>
<!-- 连接池最大空闲 -->
<property name="maxIdle" value="${maxIdle}"></property>
<!-- 连接池最小空闲 -->
<property name="minIdle" value="${minIdle}"></property>
<!-- 获取连接最大等待时间 -->
<property name="maxWait" value="${maxWait}"></property> <property name="minEvictableIdleTimeMillis" value="60000"></property>
<property name="testWhileIdle" value="true"></property>
<property name="timeBetweenEvictionRunsMillis" value="45000"></property>
<property name="validationQuery" value="select 'x'"></property>
<property name="testOnBorrow" value="false"></property>
<property name="defaultAutoCommit" value="false"></property>
</bean> <!-- 数据库连接 -->
<bean id="db-0" parent="db">
<property name="driverClassName" value="${user.db0.driver}"/>
<property name="url" value="${user.db0.url}"/>
<property name="username" value="${user.db0.username}"/>
<property name="password" value="${user.db0.password}"/>
</bean> <!-- 数据库连接 -->
<bean id="db-1" parent="db">
<property name="driverClassName" value="${user.db1.driver}"/>
<property name="url" value="${user.db1.url}"/>
<property name="username" value="${user.db1.username}"/>
<property name="password" value="${user.db1.password}"/> </bean> <!-- 数据库连接 -->
<bean id="db-2" parent="db">
<property name="driverClassName" value="${user.db2.driver}"/>
<property name="url" value="${user.db2.url}"/>
<property name="username" value="${user.db2.username}"/>
<property name="password" value="${user.db2.password}"/>
</bean> <!-- 多数据源,注入到sqlSesionFactory,注意targetDataSources中key的名称,这里和@Sharding中dataSource 有关联 -->
<bean id="multipleDataSource" class="com.sharpframework.shardingcore.multippledb.MultipleDataSource" primary="true">
<property name="defaultTargetDataSource" ref="db-0"/>
<property name="targetDataSources">
<map>
<entry key="db-0" value-ref="db-0"/>
<entry key="db-1" value-ref="db-1"/>
<entry key="db-2" value-ref="db-2"/>
</map>
</property>
</bean>

后记
Java下一个简单的数据库分库帮助类的更多相关文章
- 使用Java编写一个简单的Web的监控系统cpu利用率,cpu温度,总内存大小
原文:http://www.jb51.net/article/75002.htm 这篇文章主要介绍了使用Java编写一个简单的Web的监控系统的例子,并且将重要信息转为XML通过网页前端显示,非常之实 ...
- Linux下一个简单的日志系统的设计及其C代码实现
1.概述 在大型软件系统中,为了监测软件运行状况及排查软件故障,一般都会要求软件程序在运行的过程中产生日志文件.在日志文件中存放程序流程中的一些重要信息, 包括:变量名称及其值.消息结构定义.函数返回 ...
- 使用 java 实现一个简单的 markdown 语法解析器
1. 什么是 markdown Markdown 是一种轻量级的「标记语言」,它的优点很多,目前也被越来越多的写作爱好者,撰稿者广泛使用.看到这里请不要被「标记」.「语言」所迷惑,Markdown 的 ...
- java:jsp: 一个简单的自定义标签 tld
java:jsp: 一个简单的自定义标签 tld 请注意,uri都是:http://www.tag.com/mytag,保持统一,要不然报错,不能访问 tld文件 <?xml version=& ...
- 使用JAVA写一个简单的日历
JAVA写一个简单的日历import java.text.DateFormat;import java.text.ParseException;import java.text.SimpleDateF ...
- Java实现一个简单的网络爬虫
Java实现一个简单的网络爬虫 import java.io.BufferedReader; import java.io.BufferedWriter; import java.io.FileWri ...
- Java实现一个简单的文件上传案例
Java实现一个简单的文件上传案例 实现流程: 1.客户端从硬盘读取文件数据到程序中 2.客户端输出流,写出文件到服务端 3.服务端输出流,读取文件数据到服务端中 4.输出流,写出文件数据到服务器硬盘 ...
- 自己整理的一个访问SQLite3数据库的C++类
原文地址:自己整理的一个访问SQLite3数据库的C++类作者:vigra 近日,对SQLite3的使用进行了研究.真不愧是优秀的嵌入数据库,API接口也极其简捷.基本上只要使用以下几个接口就能完成数 ...
- 实现一个简单的http请求工具类
OC自带的http请求用起来不直观,asihttprequest库又太大了,依赖也多,下面实现一个简单的http请求工具类 四个文件源码大致如下,还有优化空间 MYHttpRequest.h(类定义, ...
随机推荐
- HTML5 进阶系列:indexedDB 数据库
前言 在 HTML5 的本地存储中,有一种叫 indexedDB 的数据库,该数据库是一种存储在客户端本地的 NoSQL 数据库,它可以存储大量的数据.从上篇:HTML5 进阶系列:web Stora ...
- Windows系统操作指令汇总
CMD命令:开始->运行->键入cmd或command(在命令行里可以看到系统版本.文件系统版本) 1. appwiz.cpl:程序和功能 2. calc:启动计算器 3. certmgr ...
- RedHat 7.1 下安装 Zabbix监控程序详解(适合linux初级用户)
RedHat 7.1 安装 Zabbix 监控程序详解(适合对linux初级用户)2017-05-02 安装步骤: 1.zabbix需要安装LAMP架构 2.安装zabbix服务 3.初始化zabbi ...
- CSS绘制简单图形
究竟该用字体图标.图片图标.还是CSS画一个图标?我也不知道.各有千秋吧.本文将介绍如何用css绘制简单的图形,所有测试在chrome58.0完成,如果你不能得到正确结果请到caniuse查一查看看是 ...
- Lucene5.5.4入门以及基于Lucene实现博客搜索功能
前言 一直以来个人博客的搜索功能很蹩脚,只是自己简单用数据库的like %keyword%来实现的,所以导致经常搜不到想要找的内容,而且高亮显示.摘要截取等也不好实现,所以决定采用Lucene改写博客 ...
- 【转】10 条提升 Android 性能的建议
每个人都知道一个 App 的成功,与这个 App 的性能体验有着很密切的关系.但是如何让你的 App 拥有极致性能体验呢?在 DroidCon NYC 2015 的这个分享里,Boris Farber ...
- GBDT与LR融合提升广告点击率预估模型
1GBDT和LR融合 LR模型是线性的,处理能力有限,所以要想处理大规模问题,需要大量人力进行特征工程,组合相似的特征,例如user和Ad维度的特征进行组合. GDBT天然适合做特 ...
- C#集合之并发集合
.NET 4 开始,在System.Collection.Concurrent中提供了几个线程安全的集合类.线程安全的集合可防止多个线程以相互冲突的方式访问集合. 为了对集合进行线程安全的访问,定义了 ...
- php学习之正则表达式
1.正则表达式基本语法 首先,我们应该了解,两个特殊的符号'^'和'$'. 他们的作用是分别指出一个字符串的开始和结束.例子如下: "^The":表示所有以"The&qu ...
- Linux的环境变量设置和查看
一.Linux的变量种类 按变量的生存周期来划分,Linux变量可分为两类: 1.永久的:需要修改配置文件,变量永久生效. 2.临时的:使用export命令声明即可,变量在关闭shell时失效. 二. ...