关键词:
看了不少网上关于多数据源的配置,大致可分为两类,分包方式和通过切面方式;
样例已上传至github:https://github.com/dadachao/multids
第一个子项目ds01即时使用分包方式完成多数据源配置。
总结项目中出现的问题和解决办法:
数据库的连接信息:
连接信息是写在db.properties文件中的:
#数据库ds1 spring.datasource.ds1.driver-class-name=com.mysql.cj.jdbc.Driver spring.datasource.ds1.url=jdbc:mysql://localhost:3306/ds1?serverTimezone=UTC spring.datasource.ds1.username=root spring.datasource.ds1.password=root #数据库ds2 spring.datasource.ds2.driver-class-name=com.mysql.cj.jdbc.Driver spring.datasource.ds2.url=jdbc:mysql://localhost:3306/ds2?serverTimezone=UTC spring.datasource.ds2.username=root spring.datasource.ds2.password=root
这些信息将在配置类DbConfig1.java中引用。一开始我是通过使用注解@ImportResource(...)引进db.properties文件,但在运行时报了org.xml.sax.SAXParseException; lineNumber: 1; columnNumber: 1; 前言中不允许有内容的错误;使用这个注解也是我瞎猜的。后是通过使用注解@PropertySource(value = "classpath:/db.properties",encoding = "utf-8")解决问题。
其次是关于在配置类中使用@ConfigurationProperties注解自动注入连接信息值(value)的问题:spring.datasource.ds1.url=jdbc:mysql://localhost:3306/ds1?serverTimezone=UTC
注意要使用.url而不是.jdbc-url;
指定数据连接池类型DataType:
数据源类型可以在配置类生成DataSource的方法中指定:
@Bean(name = "ds1DataSource") @Primary @ConfigurationProperties(prefix = "spring.datasource.ds1") public DataSource getDataSource(){ DataSourceBuilder<?> dataSourceBuilder = DataSourceBuilder.create(); dataSourceBuilder.type(com.alibaba.druid.pool.DruidDataSource.class); return dataSourceBuilder.build(); }
指定***Mapper.xml文件的路径扫描问题:(相当重要)
使用配置类进行数据源相关进行配置后,原先在application.yml中配置的相关参数就不起作用了(原因未知),原先我是在application.yml中配置了.xml文件的扫描路径:
mybatis: mapper-locations: classpath:/mybatis/**/*.xml type-aliases-package: com.kong.ds01.model
但在运行时报错:Mapper Bound Error(not found);后来通过在配置类中写入扫描路径解决:
public final static String mapperXmlLocation = "classpath:mybatis/*/*.xml"; @Bean(name = "ds1SqlSessionFactory") @Primary public SqlSessionFactory getSqlSessionFactory(@Qualifier("ds1DataSource") DataSource dataSource) throws Exception { SqlSessionFactoryBean sqlSessionFactoryBean = new SqlSessionFactoryBean(); sqlSessionFactoryBean.setDataSource(dataSource); sqlSessionFactoryBean.setMapperLocations(new PathMatchingResourcePatternResolver().getResources(mapperXmlLocation)); return sqlSessionFactoryBean.getObject(); }
而且通过这种方法表示任意路径不能使用/**/,要使用/*/,否则识别不出来又会报相同的错误,这点真是太坑了!
指定执行器的类型(Execute.Type):
可以通过在配置类中的sqlSessionTemplate中指定:
@Bean(name = "ds1SqlSessionTemplate") @Primary public SqlSessionTemplate getSqlSessionTemplate(@Qualifier("ds1SqlSessionFactory") SqlSessionFactory sqlSessionFactory){ return new SqlSessionTemplate(sqlSessionFactory, ExecutorType.BATCH); }
指定为BATCH类型后在进行批量操作时效率有明显的提高。
springboot:mybatis配置多数据源
第一个数据源:importorg.springframework.boot.context.properties.ConfigurationProperties;importorg.springframework.stereotype.Component;@Component@ConfigurationProperties(prefix="spring.datasource")publicclas 查看详情
springboot+mybatis+pagehelper配置多数据源
前言:本文为springboot结合mybatis配置多数据源,在项目当中很多情况是使用主从数据源来读写分离,还有就是操作多库,本文介绍如何一个项目同时使用2个数据源。也希望大家带着思考去学习!博主是最近才学的配置写成博... 查看详情
springboot2.x:mybatis多数据源配置
前言MyBatis多数据源配置,最近在项目建设中,需要在原有系统上扩展一个新的业务模块,特意将数据库分库,以便减少复杂度。本文直接以简单的代码示例,如何对MyBatis多数据源配置。准备创建数据库db_testSETNAMESutf8mb4;SETFOREIGN_... 查看详情
springboot2+druid+mybatis多数据源配置(代码片段)
...案。读写分离会使用多数据源的使用。下面记录如何搭建SpringBoot2+Druid+Mybatis 多数据源配置以及在使用过程遇到的问题。一、先从pom.xml入手(使用springboot2的版本)<parent><groupId>org.springframework.boot&l 查看详情
springboot+mybatis配置多数据源,分包方式
看了不少网上关于多数据源的配置,大致可分为两类,分包方式和通过切面方式;样例已上传至github:https://github.com/dadachao/multids第一个子项目ds01即时使用分包方式完成多数据源配置。总结项目中出现的问题和解决办法:数据库... 查看详情
springboot+mybatis多数据源切换
由于公司业务划分了多个数据库,开发一个项目会同事调用多个库,经过学习我们采用了注解+aop的方式实现的1.首先定义一个注解类@Retention(RetentionPolicy.RUNTIME)@Target(ElementType.METHOD)public@interfaceTargetDataSource{ Stringvalue();//此处接收... 查看详情
springboot-mybatis多数据源以及踩坑之旅
首先,springboot项目结构如下springboot配置文件内容如下 动态数据源的配置类如下(必须保证能被ComponentScan扫描到):1packagecom.letzgo.config;23importcom.alibaba.druid.pool.DruidDataSource;4importorg.apache.ibatis.session.SqlSessionFacto 查看详情
springboot实现多数据源整合mybatis版(代码片段)
前言本篇博客只讲如何从零到壹地再SpringBoot项目中实现多数据源配置,不谈源码(后续上SpringBoot自动配置等源码)。本篇博客内容基于SpringBootVersion2.5.1。背景一个项目中需要连接多个数据源,我们需要在业务层... 查看详情
springboot实现多数据源整合mybatis版(代码片段)
前言本篇博客只讲如何从零到壹地再SpringBoot项目中实现多数据源配置,不谈源码(后续上SpringBoot自动配置等源码)。本篇博客内容基于SpringBootVersion2.5.1。背景一个项目中需要连接多个数据源,我们需要在业务层... 查看详情
springboot+mybatis多数据源配置(代码片段)
配置文件pom包依赖配置:<dependency> <groupId>org.mybatis.spring.boot</groupId> <artifactId>mybatis-spring-boot-starter</artifactId> <version>$mybatis-spring-boot-starter.version</version></dependency><dependency> <gr... 查看详情
springboot+mybatis+druid+pagehelper实现多数据源并分页
前言本篇文章主要讲述的是SpringBoot整合Mybatis、Druid和PageHelper并实现多数据源和分页。其中SpringBoot整合Mybatis这块,在之前的的一篇文章中已经讲述了,这里就不过多说明了。重点是讲述在多数据源下的如何配置使用Druid和PageHelpe... 查看详情
springboot+mybatis-plus多数据源配置整合dynamic-datasource
参考技术A这里要排除DruidDataSourceAutoConfigure,因为DruidDataSourceAutoConfigure会注入一个DataSourceWrapper,其会在原生的spring.datasource下找url,username,password等。而我们动态数据源的配置路径是变化的。@DS优先级:方法>类@DS可以注解在方... 查看详情
springboot+mybatis+多数据源入门搭建+跨域集成以及过滤器配置的方式和过滤器加载顺序控制(代码片段)
Springboot+mybatis+多数据源入门搭建+跨域集成以及过滤器配置的方式和过滤器加载顺序控制由于项目需要,最近研究了一下springboot的项目搭建,下面和大家说说项目搭建的心得体会开发环境: JDK1.8 ... 查看详情
springboot2配置多数据源,整合mybatisplus增强插件
本文源码:GitHub·点这里||GitEE·点这里一、项目案例简介1、多数据简介实际的项目中,经常会用到不同的数据库以满足项目的实际需求。随着业务的并发量的不断增加,一个项目使用多个数据库:主从复制、读写分离、分布式数... 查看详情
springboot(十二):mybatis-plus的多数据源和分页
...要连接的数据库:blog和user,默认为blog3、启动类配置在@SpringBootApplication注解上增加exclude=DruidDataSourceAutoConfigure.class配置:这个配置的作用是去掉对DruidDataSourceAutoConfigure的自动配置,否则程序会报错:原因:DruidDataSourceAutoConfigur... 查看详情
springboot+mybatis通过databaseidprovider支持多数据库
概述本人最近接到一个任务,将一个系统改成同时兼容Oracle和PostgreSQL(原来是仅支持Oracle)。虽然大部分的sql语句通用,但是还有许多语法存在差异,所以我们可以通过mybatis自身提供的databaseIdProvider解决这个问题,这里记录一下... 查看详情
springboot集成mybatis动态多数据源后,mybatisplus的ipage失效的问题解决方案
背景之前做数据抽取的时候,搭了一个mybatis动态数据源切换的架子。方便他们写抽取的代码。今天同事问我,架子里面的mybatisplus的IPage失效了是什么问题。想了一下,应该是写动态数据源的时候,我自定义的mybatis的配置覆盖了... 查看详情
springboot+mybatis入门培训3多数据源与缓存和数据连接池设置(代码片段)
....baidu.com/s/1Q6pbC2SR70HKCeVXgOGUPQ提取码:1234本站资源下载Springboot+ 查看详情