使用spring+springMVC+mybatis如何解决多数据源和sql对应的问题

peter_zhangxw 2016-09-08 06:39:10

使用spring+springMVC+mybatis如何解决多数据源和sql对应的问题
Creating MapperFactoryBean with name 'gameDAO' and 'com.pico.cms.dao.GameDAO' mapperInterface
Enabling autowire by type for MapperFactoryBean with name 'gameDAO'.
Creating MapperFactoryBean with name 'moduleDAO' and 'com.pico.cms.dao.ModuleDAO' mapperInterface
Enabling autowire by type for MapperFactoryBean with name 'moduleDAO'.
Creating MapperFactoryBean with name 'orderDAO' and 'com.pico.cms.dao.OrderDAO' mapperInterface
Enabling autowire by type for MapperFactoryBean with name 'orderDAO'.
Creating MapperFactoryBean with name 'roleDAO' and 'com.pico.cms.dao.RoleDAO' mapperInterface
Enabling autowire by type for MapperFactoryBean with name 'roleDAO'.
Creating MapperFactoryBean with name 'serviceDAO' and 'com.pico.cms.dao.ServiceDAO' mapperInterface
Enabling autowire by type for MapperFactoryBean with name 'serviceDAO'.
Creating MapperFactoryBean with name 'userDAO' and 'com.pico.cms.dao.UserDAO' mapperInterface
Enabling autowire by type for MapperFactoryBean with name 'userDAO'.
SLF4J: The requested version 1.6 by your slf4j binding is not compatible with [1.5.5, 1.5.6, 1.5.7, 1.5.8, 1.5.9, 1.5.10]
SLF4J: See http://www.slf4j.org/codes.html#version_mismatch for further details.
Logging initialized using 'class org.apache.ibatis.logging.commons.JakartaCommonsLoggingImpl' adapter.
...全文
730 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
peter_zhangxw 2017-07-13
  • 打赏
  • 举报
回复
问题已解决特来结帖:在applicationcontext中配置如下: <bean id="puc" class="org.apache.commons.dbcp2.BasicDataSource" destroy-method="close"> <property name="driverClassName" value="${puc.jdbc.driverClassName}" /> <property name="url" value="${puc.jdbc.url}" /> <property name="username" value="${puc.jdbc.username}" /> <property name="password" value="${puc.jdbc.password}" /> <!-- 初始化连接大小 --> <property name="initialSize" value="5" /> <!-- 连接池最大使用连接数量 --> <property name="maxTotal" value="20" /> <!-- 连接池最大空闲 --> <property name="maxIdle" value="10" /> <!-- 连接池最小空闲 --> <property name="minIdle" value="5" /> <!-- 获取连接最大等待时间 --> <property name="maxWaitMillis" value="6000" /> <property name="validationQuery"> <value>SELECT 1</value> </property> <!--removeAbandoned: 是否自动回收超时连接 <property name="removeAbandoned" value="true" />--> <!--removeAbandonedTimeout: 超时时间(以秒数为单位) --> <property name="removeAbandonedTimeout" value="180" /> <property name="testOnBorrow"> <value>true</value> </property> </bean> <bean id="pay" class="org.apache.commons.dbcp2.BasicDataSource" destroy-method="close"> <property name="driverClassName" value="${pay.jdbc.driverClassName}" /> <property name="url" value="${pay.jdbc.url}" /> <property name="username" value="${pay.jdbc.username}" /> <property name="password" value="${pay.jdbc.password}" /> <!-- 初始化连接大小 --> <property name="initialSize" value="5" /> <!-- 连接池最大使用连接数量 --> <property name="maxTotal" value="20" /> <!-- 连接池最大空闲 --> <property name="maxIdle" value="10" /> <!-- 连接池最小空闲 --> <property name="minIdle" value="5" /> <!-- 获取连接最大等待时间 --> <property name="maxWaitMillis" value="6000" /> <property name="validationQuery"> <value>SELECT 1</value> </property> <!--removeAbandoned: 是否自动回收超时连接 <property name="removeAbandoned" value="true" />--> <!--removeAbandonedTimeout: 超时时间(以秒数为单位) --> <property name="removeAbandonedTimeout" value="180" /> <property name="testOnBorrow"> <value>true</value> </property> </bean> <!-- 配置多个数据源 --> <bean id="multipleDataSource" class="com.pico.cms.util.MultipleDataSource"> <property name="defaultTargetDataSource" ref="puc" /> <property name="targetDataSources"> <map> <entry key="puc" value-ref="puc" /> <entry key="pay" value-ref="pay" /> </map> </property> </bean> 写一个切换数据库的工具类: import org.aspectj.lang.ProceedingJoinPoint; import org.aspectj.lang.Signature; import org.aspectj.lang.annotation.Around; import org.aspectj.lang.annotation.Aspect; import org.springframework.stereotype.Component; import com.pico.cms.dao.Pay; import com.pico.cms.dao.Puc; /* *切换数据库工具 * */ @Component @Aspect public class MultipleDataSourceAspectAdvice { @Around("execution(* com.pico.cms.dao.*.*(..))") public Object doAround(ProceedingJoinPoint jp) throws Throwable { if (jp.getTarget() instanceof Puc) { Signature signature = jp.getSignature(); System.out.println(signature); MultipleDataSource.setDataSourceKey("puc"); } else if (jp.getTarget() instanceof Pay) { MultipleDataSource.setDataSourceKey("pay"); } return jp.proceed(); } } 在DAO层中写两个接口: public interface Puc { } public interface Pay { } 写其他DAO接口时哪个需要连接puc就extend Puc,pay同理 之后就可以实现数据库自动切换了。
wswzh0329 2017-01-04
  • 打赏
  • 举报
回复
引用 2 楼 Fasdfg12的回复:
就一个mysql数据库,里面有两个数据源puc,pay
。。解决了吗??????????
peter_zhangxw 2016-09-09
  • 打赏
  • 举报
回复
就一个mysql数据库,里面有两个数据源puc,pay
街头小贩 2016-09-09
  • 打赏
  • 举报
回复
多数据源指的是一个项目从多个库中取数据?
项目描述 说明: spring security 全注解式的权限管理 动态配置权限,角色和资源,权限控制到按钮粒度 采用token进行权限校验,禁用session,未登录返回401,权限不足返回403 采用redis存储token及权限信息 内置功能: 用户管理:用户查询、添加用户、修改用户、给用户分配角色 菜单管理:菜单列表、添加菜单、修改菜单、删除菜单、权限配置、菜单图标设置、菜单排序 角色管理:角色查询、添加角色、修改角色、删除角色 代码生成:根据表名生成bean、controller、dao、Mapper.xml、列表页、搜索、分页、新增页、修改页 job集群:创建job、取消job、查询job、下拉搜索spring bean 数据源监控:druid 接口swagger文档 日志查询 邮件管理:发送邮件、搜索邮件 文件管理:上传文件、文件列表、文件删除 公告管理:公告未读提醒、发布公告、查询公告、公告阅读人列表 excel下载:自定义sql导出excel、也可在页面展示sql结果数据 字典管理:一些常量字典的维护 个人信息修改 修改密码 头像修改 其他说明: 日志模块 sl4j日志分包:将sql日志、业务日志、异常日志进行了分离,更方便定位问题 日志表:使用aop拦截实现 权限控制:基于token方式,禁用session 对各种不同异常进行了全局统一处理 使用lombok简化java代码,让源码更简洁,可读性高 mybatis未进行二次封装,原滋原味,简单sql采用注解,复杂sql采用Mapper.xml配置 使用了layui的弹出层、菜单、文件上传、富文本编辑、日历、选项卡、数据表格等 表单数据采用bootstrapValidator校验,简单快捷方便 运行环境 jdk8+mysql+redis+IntelliJ IDEA+maven 项目技术(必填) Springboot+Mybatis+ SpringMvc+springsecrity+Redis+bootstrap+jquery 数据库文件 压缩包内 jar包文件 maven搭建
项目描述 在上家公司自己集成的一套系统,用了两个多月的时间完成的:Springboot+Mybatis-plus+ SpringMvc+Shiro+Redis企业级开发系统 Springboot作为容器,使用mybatis作为持久层框架 使用官方推荐的thymeleaf做为模板引擎,shiro作为安全框架,主流技术 几乎零XML,极简配置 两套UI实现(bootstrap+layer ui),可以自由切换 报表后端采用技术: SpringBoot整合SSM(Spring+Mybatis-plus+ SpringMvc),spring security 全注解式的权限管理和JWT方式禁用Session,采用redis存储token及权限信息 报表前端采用Bootstrap框架,结合Jquery Ajax,整合前端Layer.js(提供弹窗)+Bootstrap-table(数据列表展示)+ Bootstrap-Export(各种报表导出SQL,Excel,pdf等)框架,整合Echars,各类图表的展示(折线图,饼图,直方图等),使用了layui的弹出层、菜单、文件上传、富文本编辑、日历、选项卡、数据表格等 Oracle关系型数据库以及非关系型数据库(Redis),Oracle 性能调优(PL/SQL语言,SQL查询优化,存储过程等),用Redis做中间缓存,缓存数据 实现异步处理,定时任务,整合Quartz Job以及Spring Task 邮件管理功能, 整合spring-boot-starter-mail发送邮件等, 数据源:druid 用户管理,菜单管理,角色管理,代码生成 运行环境 jdk8+oracle+redis+IntelliJ IDEA+maven 项目技术(必填) Springboot+Mybatis-plus+ SpringMvc+Shiro+Redis 数据库文件 压缩包内 jar包文件 maven搭建 Springboot+Mybatis-plus+ SpringMvc+Shiro+Redis企业级报表后台管理系统 http://localhost:/8080/login admin admin Springboot+Mybatis-plus+ SpringMvc+Shiro+Redis企业级报表后台管理系统Springboot+Mybatis-plus+ SpringMvc+Shiro+Redis企业级报表后台管理系统Springboot+Mybatis-plus+ SpringMvc+Shiro+Redis企业级报表后台管理系统Springboot+Mybatis-plus+ SpringMvc+Shiro+Redis企业级报表后台管理系统Springboot+Mybatis-plus+ SpringMvc+Shiro+Redis企业级报表后台管理系统
项目描述 在上家公司自己集成的一套系统,用了两个多月的时间完成的:Springboot+Mybatis-plus+ SpringMvc+Shiro+Redis企业级开发系统 Springboot作为容器,使用mybatis作为持久层框架 使用官方推荐的thymeleaf做为模板引擎,shiro作为安全框架,主流技术 几乎零XML,极简配置 两套UI实现(bootstrap+layer ui),可以自由切换 报表后端采用技术: SpringBoot整合SSM(Spring+Mybatis-plus+ SpringMvc),spring security 全注解式的权限管理和JWT方式禁用Session,采用redis存储token及权限信息 报表前端采用B ootstrap框架,结合Jquery Ajax,整合前端Layer.js(提供弹窗)+Bootstrap-table(数据列表展示)+ Bootstrap-Export(各种报表导出SQL,Excel,pdf等)框架,整合Echars,各类图表的展示(折线图,饼图,直方图等),使用了layui的弹出层、菜单、文件上传、富文本编辑、日历、选项卡、数据表格等 Oracle关系型数据库以及非关系型数据库(Redis),Oracle 性能调优(PL/SQL语言,SQL查询优化,存储过程等),用Redis做中间缓存,缓存数据 实现异步处理,定时任务,整合Quartz Job以及Spring Task 邮件管理功能, 整合spring-boot-starter-mail发送邮件等, 数据源:druid 用户管理,菜单管理,角色管理,代码生成 运行环境 jdk8+oracle+redis+IntelliJ IDEA+maven 项目技术(必填) Springboot+Mybatis-plus+ SpringMvc+Shiro+Redis 数据库文件 压缩包内 jar包文件 maven搭建 Springboot+Mybatis-plus+ SpringMvc+Shiro+Redis企业级报表后台管理系统 http://localhost:/8080/login admin admin Springboot+Mybatis-plus+ SpringMvc+Shiro+Redis企业级报表后台管理系统Springboot+Mybatis-plus+ SpringMvc+Shiro+Redis企业级报表后台管理系统Springboot+Mybatis-plus+ SpringMvc+Shiro+Redis企业级报表后台管理系统Springboot+Mybatis-plus+ SpringMvc+Shiro+Redis企业级报表后台管理系统Springboot+Mybatis-plus+ SpringMvc+Shiro+Redis企业级报表后台管理系统

10,606

社区成员

发帖
与我相关
我的任务
社区描述
Web 开发 其他
社区管理员
  • 其他
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧