使用 springboot
然后添加 mybatis-plus
,添加阿里 druid
来做连接,采用了多数据源进行配置 dynamic-datasource-spring-boot-starter
然后就出现其中个别问题:多数据源抛出dbType not support : sqlite异常。
https://gitee.com/baomidou/dynamic-datasource-spring-boot-starter/issues/I1NLER 复制代码
采用的是苞米豆 baomidou 基于 SpringBoot多数据源、动态数据源、主从分离、快速启动器 支持分布式事务。刚刚验证了数据库:mysql、mariadb、oracle、db2、h2、hsql、postgresql、sqlserver、sqlite,唯独在多数据源暂不支持sqlite 报错误,错误如下:
java.lang.IllegalStateException: dbType not support : sqlite, url jdbc:sqlite:D:/sqlite/database/db_demo.db 复制代码
排查的半天,上网也搜寻了,就是说防火墙别开启。打开PSCache,并且指定每个连接上PSCache的大小(防火墙这一块一定不能开,sqlite不支持,会导致奇怪的异常)。配置监控统计拦截的filters,去掉后监控界面sql无法统计,'wall'用于防火墙(启动sqlite时候需要关闭wall)。把filters中的 stat,wall,slf4j
改成 stat,slf4j
# 连接池的配置信息 DRUID POOL Congif # 全局druid参数,绝大部分值和默认保持一致。(现已支持的参数如下,不清楚含义不要乱设置) # 初始化大小,最小,最大 spring.datasource.dynamic.druid.initial-size=5 spring.datasource.dynamic.druid.min-idle=5 spring.datasource.dynamic.druid.max-active=20 # 配置获取连接等待超时的时间 spring.datasource.dynamic.druid.max-wait=60000 # 配置间隔多久才进行一次检测,检测需要关闭的空闲连接,单位是毫秒 spring.datasource.dynamic.druid.time-between-eviction-runs-millis=60000 # 配置一个连接在池中最小生存的时间,单位是毫秒 spring.datasource.dynamic.druid.min-evictable-idle-time-millis=300000 #spring.datasource.dynamic.druid.validation-query=SELECT 1 FROM DUAL spring.datasource.dynamic.druid.test-while-idle=true spring.datasource.dynamic.druid.test-on-borrow=false spring.datasource.dynamic.druid.test-on-return=false # 打开PSCache,并且指定每个连接上PSCache的大小(防火墙这一块一定不能开,sqlite不支持,会导致奇怪的异常) spring.datasource.dynamic.druid.pool-prepared-statements=true spring.datasource.dynamic.druid.max-pool-prepared-statement-per-connection-size=20 # 配置监控统计拦截的filters,去掉后监控界面sql无法统计,'wall'用于防火墙(启动sqlite时候需要关闭wall) #spring.datasource.dynamic.druid.filters=stat,wall,slf4j spring.datasource.dynamic.druid.filters=stat,slf4j # 通过connectProperties属性来打开mergeSql功能;慢SQL记录 spring.datasource.dynamic.druid.connectionProperties=druid.stat.mergeSql/=true;druid.stat.slowSqlMillis/=5000 # 合并多个DruidDataSource的监控数据 spring.datasource.dynamic.druid.use-global-data-source-stat=true 复制代码
server.port=8080
mybatis-plus.mapper-locations=classpath:/mapper/*Mapper.xml
mybatis-plus.type-aliases-package=
# 去除druid配置 排除SpringBoot自带数据源
spring.autoconfigure.exclude=com.alibaba.druid.spring.boot.autoconfigure.DruidDataSourceAutoConfigure
# 默认数据源 mysql、mariadb、oracle、db2、h2、hsql、postgresql、sqlserver、sqlite
# 多数据源暂不支持sqlite 报错误(处理方式关闭防火墙,spring.datasource.dynamic.druid.filters=stat,slf4j)
# java.lang.IllegalStateException: dbType not support : sqlite, url jdbc:sqlite:E:/test.db
# https://gitee.com/baomidou/dynamic-datasource-spring-boot-starter/issues/IVC5W
# https://gitee.com/baomidou/dynamic-datasource-spring-boot-starter/issues/I1NLER
spring.datasource.dynamic.primary=sqlite
# sqlite数据源配置
spring.datasource.dynamic.datasource.sqlite.username=test
spring.datasource.dynamic.datasource.sqlite.password=test
spring.datasource.dynamic.datasource.sqlite.url=jdbc:sqlite:D:/sqlite/database/db_demo.db
spring.datasource.dynamic.datasource.sqlite.driver-class-name=org.sqlite.JDBC
## dm数据源配置
#spring.datasource.dynamic.datasource.dm.username=SYSDBA
#spring.datasource.dynamic.datasource.dm.password=SYSDBA
#spring.datasource.dynamic.datasource.dm.url=jdbc:dm://localhost:5236/DMSERVER?zeroDateTimeBehavior=convertToNull&useUnicode=true&characterEncoding=utf-8
#spring.datasource.dynamic.datasource.dm.driver-class-name=dm.jdbc.driver.DmDriver
#
## mariadb数据源配置
#spring.datasource.dynamic.datasource.mariadb.username=pig4cloud
#spring.datasource.dynamic.datasource.mariadb.password=pig4cloud
#spring.datasource.dynamic.datasource.mariadb.url=jdbc:mariadb://localhost:3306/teset?characterEncoding=utf-8&useSSL=false&useTimezone=true&serverTimezone=GMT%2B8
#spring.datasource.dynamic.datasource.mariadb.driver-class-name=org.mariadb.jdbc.Driver
#
## postgresql数据源配置
#spring.datasource.dynamic.datasource.postgresql.username=pig4cloud
#spring.datasource.dynamic.datasource.postgresql.password=pig4cloud
#spring.datasource.dynamic.datasource.postgresql.url=jdbc:postgresql://localhost:5432/switcher_pg
#spring.datasource.dynamic.datasource.postgresql.driver-class-name=org.postgresql.Driver
#
## h2数据源配置
#spring.datasource.dynamic.datasource.h2.username=pig4cloud
#spring.datasource.dynamic.datasource.h2.password=pig4cloud
#spring.datasource.dynamic.datasource.h2.url=jdbc:h2:mem:test
#spring.datasource.dynamic.datasource.h2.driver-class-name=org.h2.Driver
#
## mysql数据源配置
#spring.datasource.dynamic.datasource.mysql.username=root
#spring.datasource.dynamic.datasource.mysql.password=12345678
#spring.datasource.dynamic.datasource.mysql.url=jdbc/:mysql/://localhost/:3306/boss?useOldAliasMetadataBehavior/=true&useUnicode/=true&characterEncoding/=UTF-8&autoReconnect/=true&autoReconnectForPools/=true&failOverReadOnly/=false&connectTimeout/=0&socketTimeout/=0&allowMultiQueries/=true&useSSL/=false&serverTimezone/=Hongkong&rewriteBatchedStatements/=true
#spring.datasource.dynamic.datasource.mysql.driver-class-name=com.mysql.jdbc.Driver
#
## sqlserver数据源配置
#spring.datasource.dynamic.datasource.sqlserver.username=pig4cloud
#spring.datasource.dynamic.datasource.sqlserver.password=pig4cloud
#spring.datasource.dynamic.datasource.sqlserver.url=jdbc:sqlserver://localhost:1433;DatabaseName=ec_unit_test_db
#spring.datasource.dynamic.datasource.sqlserver.driver-class-name=com.microsoft.sqlserver.jdbc.SQLServerDriver
#
## oracle数据源配置
#spring.datasource.dynamic.datasource.oracle.username=pig4cloud
#spring.datasource.dynamic.datasource.oracle.password=pig4cloud
#spring.datasource.dynamic.datasource.oracle.url=jdbc:oracle:thin:@localhost:1521:orcl
#spring.datasource.dynamic.datasource.oracle.driver-class-name=oracle.jdbc.OracleDriver
# 连接池的配置信息 DRUID POOL Congif
# 全局druid参数,绝大部分值和默认保持一致。(现已支持的参数如下,不清楚含义不要乱设置)
# 初始化大小,最小,最大
spring.datasource.dynamic.druid.initial-size=5
spring.datasource.dynamic.druid.min-idle=5
spring.datasource.dynamic.druid.max-active=20
# 配置获取连接等待超时的时间
spring.datasource.dynamic.druid.max-wait=60000
# 配置间隔多久才进行一次检测,检测需要关闭的空闲连接,单位是毫秒
spring.datasource.dynamic.druid.time-between-eviction-runs-millis=60000
# 配置一个连接在池中最小生存的时间,单位是毫秒
spring.datasource.dynamic.druid.min-evictable-idle-time-millis=300000
#spring.datasource.dynamic.druid.validation-query=SELECT 1 FROM DUAL
spring.datasource.dynamic.druid.test-while-idle=true
spring.datasource.dynamic.druid.test-on-borrow=false
spring.datasource.dynamic.druid.test-on-return=false
# 打开PSCache,并且指定每个连接上PSCache的大小(防火墙这一块一定不能开,sqlite不支持,会导致奇怪的异常)
spring.datasource.dynamic.druid.pool-prepared-statements=true
spring.datasource.dynamic.druid.max-pool-prepared-statement-per-connection-size=20
# 配置监控统计拦截的filters,去掉后监控界面sql无法统计,'wall'用于防火墙(启动sqlite时候需要关闭wall)
#spring.datasource.dynamic.druid.filters=stat,wall,slf4j
spring.datasource.dynamic.druid.filters=stat,slf4j
# 通过connectProperties属性来打开mergeSql功能;慢SQL记录
spring.datasource.dynamic.druid.connectionProperties=druid.stat.mergeSql/=true;druid.stat.slowSqlMillis/=5000
# 合并多个DruidDataSource的监控数据
spring.datasource.dynamic.druid.use-global-data-source-stat=true
logging.level.druid=debug
复制代码
<!-- mysql数据源配置 -->
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>8.0.11</version>
</dependency>
<!-- sqlserver数据源配置 -->
<dependency>
<groupId>com.microsoft.sqlserver</groupId>
<artifactId>sqljdbc4</artifactId>
<version>4.0</version>
</dependency>
<!-- oracle数据源配置 -->
<dependency>
<groupId>com.oracle</groupId>
<artifactId>ojdbc6</artifactId>
<version>11.2.0.3</version>
</dependency>
<!-- sqlite数据源配置 -->
<dependency>
<groupId>org.xerial</groupId>
<artifactId>sqlite-jdbc</artifactId>
<version>3.28.0</version>
</dependency>
<!-- h2数据源配置 -->
<dependency>
<groupId>com.h2database</groupId>
<artifactId>h2</artifactId>
<version>1.4.200</version>
</dependency>
<!-- postgresql数据源配置 -->
<dependency>
<groupId>org.postgresql</groupId>
<artifactId>postgresql</artifactId>
<version>42.2.14</version>
</dependency>
<!-- mariadb数据源配置 -->
<dependency>
<groupId>org.mariadb.jdbc</groupId>
<artifactId>mariadb-java-client</artifactId>
<version>2.6.1</version>
</dependency>
<!-- dm数据源配置 -->
<dependency>
<groupId>com.dameng</groupId>
<artifactId>Dm7JdbcDriver17</artifactId>
<version>7.6.0.77</version>
</dependency>
复制代码