- 浏览: 834913 次
文章分类
- 全部博客 (365)
- java (124)
- spring mvc (21)
- spring (22)
- struts2 (6)
- jquery (27)
- javascript (24)
- mybatis/ibatis (8)
- hibernate (7)
- compass (11)
- lucene (26)
- flex (0)
- actionscript (0)
- webservice (8)
- rabbitMQ/Socket (15)
- jsp/freemaker (5)
- 数据库 (27)
- 应用服务器 (21)
- Hadoop (1)
- PowerDesigner (3)
- EJB (0)
- JPA (0)
- PHP (2)
- C# (0)
- .NET (0)
- html (2)
- xml (5)
- android (7)
- flume (1)
- zookeeper (0)
- 证书加密 (2)
- maven (1)
- redis (2)
- cas (11)
最新评论
-
zuxianghuang:
通过pom上传报错 Artifact upload faile ...
nexus上传了jar包.通过maven引用当前jar,不能取得jar的依赖 -
流年末年:
百度网盘的挂了吧???
SSO单点登录系列3:cas-server端配置认证方式实践(数据源+自定义java类认证) -
953434367:
UfgovDBUtil 是什么类
Java发HTTP POST请求(内容为xml格式) -
smilease:
帮大忙了,非常感谢
freemaker自动生成源代码 -
syd505:
十分感谢作者无私的分享,仔细阅读后很多地方得以解惑。
Nginx 反向代理、负载均衡、页面缓存、URL重写及读写分离详解
[代码] DbContextHolder
01 |
public class DbContextHolder {
|
02 |
//线程安全的ThreadLocal
|
03 |
private static final ThreadLocal<String> contextHolder = new ThreadLocal<String>();
|
04 |
|
05 |
public static void setDbType(String dbType) {
|
06 |
contextHolder.set(dbType);
|
07 |
}
|
08 |
|
09 |
public static String getDbType() {
|
10 |
return ((String)contextHolder.get());
|
11 |
}
|
12 |
public static void clearDbType() {
|
13 |
contextHolder.remove();
|
14 |
}
|
15 |
|
16 |
} |
[代码] DynamicDataSource
01 |
import org.springframework.jdbc.datasource.lookup.AbstractRoutingDataSource;
|
02 |
|
03 |
public class DynamicDataSource extends AbstractRoutingDataSource {
|
04 |
|
05 |
@Override
|
06 |
public Object determineCurrentLookupKey() {
|
07 |
return DbContextHolder.getDbType();
|
08 |
}
|
09 |
|
10 |
} |
[代码] spring.xml
01 |
<!-- 数据源属性配置文件 --> |
02 |
<context:property-placeholder location= "classpath:ibatis.properties" />
|
03 |
|
04 |
|
05 |
<bean id= "jksh" class = "org.apache.commons.dbcp.BasicDataSource"
|
06 |
destroy-method= "close" >
|
07 |
<!-- Connection Info -->
|
08 |
<property name= "driverClassName" value= "${driver.jksh}" />
|
09 |
<property name= "url" value= "${url.jksh}" />
|
10 |
<property name= "username" value= "${username.jksh}" />
|
11 |
<property name= "password" value= "${password.jksh}" />
|
12 |
|
13 |
<!-- Connection Pooling Info -->
|
14 |
<property name= "maxIdle" value= "${maxIdle.jksh}" />
|
15 |
<property name= "maxActive" value= "${maxActive.jksh}" />
|
16 |
<property name= "defaultAutoCommit" value= "false" />
|
17 |
<property name= "timeBetweenEvictionRunsMillis"
|
18 |
value= "${timeBetweenEvictionRunsMillis.jksh}" />
|
19 |
<property name= "minEvictableIdleTimeMillis" value= "${minEvictableIdleTimeMillis.jksh}" />
|
20 |
</bean>
|
21 |
|
22 |
<bean id= "jclt" class = "org.apache.commons.dbcp.BasicDataSource"
|
23 |
destroy-method= "close" >
|
24 |
<!-- Connection Info -->
|
25 |
<property name= "driverClassName" value= "${driver.jclt}" />
|
26 |
<property name= "url" value= "${url.jclt}" />
|
27 |
<property name= "username" value= "${username.jclt}" />
|
28 |
<property name= "password" value= "${password.jclt}" />
|
29 |
|
30 |
<!-- Connection Pooling Info -->
|
31 |
<property name= "maxIdle" value= "${maxIdle.jclt}" />
|
32 |
<property name= "maxActive" value= "${maxActive.jclt}" />
|
33 |
<property name= "defaultAutoCommit" value= "false" />
|
34 |
<property name= "timeBetweenEvictionRunsMillis" value= "${timeBetweenEvictionRunsMillis.jclt}" />
|
35 |
<property name= "minEvictableIdleTimeMillis" value= "${minEvictableIdleTimeMillis.jclt}" />
|
36 |
</bean>
|
37 |
|
38 |
|
39 |
<bean id= "dataSource" class = "com.jclt.service.commons.DynamicDataSource" >
|
40 |
<property name= "targetDataSources" >
|
41 |
<map key-type= "java.lang.String" >
|
42 |
<entry key= "jksh" value-ref= "jksh" />
|
43 |
<entry key= "jclt" value-ref= "jclt" />
|
44 |
</map>
|
45 |
</property>
|
46 |
<property name= "defaultTargetDataSource" ref= "jksh" />
|
47 |
</bean>
|
[代码] main方法
01 |
import javax.sql.DataSource;
|
02 |
|
03 |
import org.springframework.context.ApplicationContext;
|
04 |
import org.springframework.context.support.ClassPathXmlApplicationContext;
|
05 |
import org.springframework.core.io.FileSystemResource;
|
06 |
import org.springframework.core.io.Resource;
|
07 |
|
08 |
import com.jclt.service.commons.DbContextHolder;
|
09 |
import com.jclt.service.model.User;
|
10 |
|
11 |
import org.apache.ibatis.session.SqlSession;
|
12 |
import org.apache.ibatis.session.SqlSessionFactory;
|
13 |
import org.mybatis.spring.SqlSessionFactoryBean;
|
14 |
|
15 |
public class Text {
|
16 |
|
17 |
/**
|
18 |
* @param args
|
19 |
*/
|
20 |
public static void main(String[] args) {
|
21 |
ApplicationContext appContext = new ClassPathXmlApplicationContext( "client-beans.xml" );
|
22 |
|
23 |
DbContextHolder.setDbType( "jclt" );
|
24 |
String res= "src/main/resources/ibatis-config.xml" ;
|
25 |
DataSource datasource=(DataSource) appContext.getBean( "dataSource" );
|
26 |
|
27 |
SqlSessionFactoryBean bean= new SqlSessionFactoryBean();
|
28 |
bean.setDataSource(datasource);
|
29 |
Resource resource= new FileSystemResource(res);
|
30 |
bean.setConfigLocation(resource);
|
31 |
try {
|
32 |
SqlSessionFactory sessionfactory = bean.getObject();
|
33 |
SqlSession session=sessionfactory.openSession();
|
34 |
User user=session.selectOne( "com.jclt.service.Dao.readJKSH.findOne" );
|
35 |
System.out.println(user.getName());
|
36 |
} catch (Exception e) {
|
37 |
e.printStackTrace();
|
38 |
}
|
39 |
|
40 |
DbContextHolder.setDbType( "jksh" );
|
41 |
String res1= "src/main/resources/ibatis-config.xml" ;
|
42 |
DataSource datasource1=(DataSource) appContext.getBean( "dataSource" );
|
43 |
|
44 |
SqlSessionFactoryBean bean1= new SqlSessionFactoryBean();
|
45 |
bean1.setDataSource(datasource1);
|
46 |
Resource resource1= new FileSystemResource(res1);
|
47 |
bean1.setConfigLocation(resource1);
|
48 |
|
49 |
try {
|
50 |
SqlSessionFactory sessionfactory = bean.getObject();
|
51 |
SqlSession session=sessionfactory.openSession();
|
52 |
User user=session.selectOne( "com.jclt.service.Dao.readJKSH.findOne" );
|
53 |
System.out.println(user.getName());
|
54 |
} catch (Exception e) {
|
55 |
e.printStackTrace();
|
56 |
}
|
57 |
|
58 |
|
59 |
|
60 |
|
61 |
}
|
62 |
|
63 |
} |
发表评论
-
jackson annotations注解详解
2015-01-13 11:34 18899官方WIKI:https://github.com/Fast ... -
关于hibernate 、ibatis、jdbctemplate对Bbasedao的封装已经使用方式
2014-06-05 16:20 1487/********************* ... -
ibatis常用16条SQL语句
2014-04-30 09:28 666(1) 输入参数为单个值 ... -
SpringMVC3.0+MyIbatis3.0(分页示例)
2013-10-30 17:24 2163参考资料 1 ibatis2.x与mybatis ... -
Ehcache 整合Spring 使用页面、对象缓存
2012-11-02 19:56 1020Ehcache在很多项目中都出现过,用法也比较简 ... -
Spring 3.1 M1 中的缓存功能
2012-11-02 19:26 796本文转自:http://www.oschina.net/ ... -
深入剖析Spring Web源码(八) - 处理器映射,处理器适配器以及处理器的实现 - 基于简单控制器流程的实现
2012-10-31 13:37 12101.1.1.1 ... -
spring 源码 阅读 笔记 之 HandlerMapping
2012-10-31 12:59 1607SpringCVSBeanHTMLAnt ... -
spring mvc重复提交拦截器方法
2012-10-31 11:37 8960import javax.servlet.http.HttpS ... -
不重复配置——利用Spring通用化配置
2012-10-17 09:40 944还记得 如下这种配置吗: 1、struts2作用域 ... -
Ehcache 整合Spring 使用页面、对象缓存
2012-10-16 09:44 751Ehcache在很多项目中都出现过,用法也比较简单。一般的 ... -
SpringMVC文件上传 多文件
2012-10-15 17:27 7034必须明确告诉DispatcherServlet如何处理Mult ... -
Spring MVC 3.1新特性 生产者、消费者请求限定
2012-10-12 11:50 11026.6.5、生产者、消费者限定 6.6.5.1、基本概念 ... -
spring MVC 文件上传
2012-10-06 10:03 2020spring支持在网络应用程序处理文件上传,提供拔插的org. ... -
JasperReport与spring集成的三种方式
2012-09-26 17:29 1780最近要用JasperReport,试着和sprin ... -
Spring MVC+Jasper Report 及生成PDF的中文问题
2012-09-26 17:10 2先说两句报表框架的选择,JasperRepor ... -
Springmvc与jasperreport结合生成报表的一种方法
2012-09-26 16:42 1<script type="text/ja ... -
spring 3.1中的cache小结
2012-09-22 23:27 947spring 3.1中有cache了,下 ... -
Ibatis中$与#的区别
2012-09-08 08:58 761iBATISSQL 在Ibatis中我们使用Sq ... -
Mybatis 3.1中 Mapper XML 文件 的学习详解
2012-09-08 08:58 1215MyBatis 真正的力量是在映射语句中。这 ...
相关推荐
springboot+druid+mybatis多数据源动态切换,基于sql类型完成读写分离操作
Mybatis+Spring+SpringMVC+quartz多数据源切换 定时任务 多数据库之间同步
项目中我们经常会遇到多数据源的问题,尤其是数据同步或定时任务等项目更是如此。多数据源让人最头痛的,不是配置多个数据源,而是如何能灵活动态的切换数据源。 此项目就是为了解决这个问题。
spring +springboot+mybatis+maven 读写分离,数据库采用mysql, 采用springboot 采用项目框架搭建,继承spring 中的AbstractRoutingDataSource,实现 determineCurrentLookupKey 进行数据源的动态切换,采用Spring ...
Spring-boot+mybatis多数据源整合(动态切换数据源),亲测可用
使用aop进行多数据源切换 springMVC+spring+mybatis增删改查的使用。dk8+tomcat8+mysql+Eclipse+maven。spring+spring mvc+mybatis+bootstrap+jquery
springboot + mybatis-plus + database+ 多数据源 + redis + hutool 框架干净,没有其他冗余的成分; 配置了MP的代码生成器,意见生成代码,节省开发时间! 可用于各种定时任务处理,各种夸库操作, 多数据源支持...
spring整合mybatis多数据源切换 可以运行的demo实例
SpringBoot+Druid+MyBatis实现多数据源切换
springboot+mybatis结合,多数据源配置,并实现注解aop动态切换,可实现读写分离,maven结构。
springboot实现数据源动态切换 注意事项: 1. 该demo采用yml配置数据库信息,注意url标签为jdbc-url 2.项目中加了日志输出,可看到完整执行过程 3.在Service中应用事务时,自定义的注解将失效,解决办法:可将注解...
spring mybatis 多数据源动态切换
mybatis+spring实现动态切换数据源,修改数据源配置信息之后,直接运行test可进行测试
数据源:druid 用户管理,菜单管理,角色管理,代码生成 运行环境 jdk8+oracle+redis+IntelliJ IDEA+maven 项目技术(必填) Springboot+Mybatis-plus+ SpringMvc+Shiro+Redis 数据库文件 压缩包内 jar包文件 ...
springboot + mybatis +mysql+ sqlserver 双数据源 springaop实现自动切换
主要介绍了Spring + Mybatis 项目实现动态切换数据源的相关资料,需要的朋友参考下吧
存储过程等),用Redis做中间缓存,缓存数据 实现异步处理,定时任务,整合Quartz Job以及Spring Task 邮件管理功能, 整合spring-boot-starter-mail发送邮件等, 数据源:druid 用户管理,菜单管理,角色管理,代码...
下面小编就为大家带来一篇spring boot+mybatis 多数据源切换(实例讲解)。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧
Spring+SpringMvc+MybatisPlus实现多数据源切换、利用自定义Aop注解,只需要在需要切换数据库的方法上加上注解即可实现、极大避免了代码冗余。
SpringBoot整合mybatis-plus实现多数据源的动态切换且支持分页查询,案例以postgresql和oracle数据库为数据源,分别使用mybatis-plus分页插件和pagehelper分页插件实现分页查询。