魔客吧是什麼程序做的网站,代理厦门网站设计公司,电脑怎么做网站,苏州市网站建设水平分表是在同一个数据库内#xff0c;把同一个表的数据按一定规则拆到多个表中,多数据源采用 mybatis-plus的dynamic-datasource 分库分表采用sharding-jdbc 数据库连接池管理是alibaba的druid-spring-boot-starter
同一个数据库内分表
目录
1.数据库表
2.配置
3.引入的…水平分表是在同一个数据库内把同一个表的数据按一定规则拆到多个表中,多数据源采用 mybatis-plus的dynamic-datasource 分库分表采用sharding-jdbc 数据库连接池管理是alibaba的druid-spring-boot-starter
同一个数据库内分表
目录
1.数据库表
2.配置
3.引入的jar包
4.数据库操作
5.以下是可运行的例子
6.参考 1.数据库表
数据库 表结构
CREATE TABLE t_order_4 (order_id bigint NOT NULL COMMENT 订单id,price decimal(10,2) NOT NULL COMMENT 订单价格,user_id bigint NOT NULL COMMENT 下单用户id,status varchar(50) CHARACTER SET utf8mb3 COLLATE utf8mb3_general_ci NOT NULL COMMENT 订单状态,create_time datetime DEFAULT NULL,PRIMARY KEY (order_id) USING BTREE
) ENGINEInnoDB DEFAULT CHARSETutf8mb3 ROW_FORMATDYNAMIC;
在配置多数据源的情况下分表
2.配置
application.yaml配置
--- #################### 数据库相关配置 ####################
spring:# 数据源配置项autoconfigure:exclude:- com.alibaba.druid.spring.boot.autoconfigure.DruidDataSourceAutoConfigure # 排除 Druid 的自动配置使用 dynamic-datasource-spring-boot-starter 配置多数据源
# main:
# allow-bean-definition-overriding: truedatasource:druid: # Druid 【监控】相关的全局配置web-stat-filter:enabled: truestat-view-servlet:enabled: trueallow: # 设置白名单不填则允许所有访问url-pattern: /druid/*login-username: # 控制台管理用户名和密码login-password:filter:stat:enabled: truelog-slow-sql: true # 慢 SQL 记录slow-sql-millis: 100merge-sql: truewall:config:multi-statement-allow: truedynamic: # 多数据源配置druid: # Druid 【连接池】相关的全局配置initial-size: 5 # 初始连接数min-idle: 10 # 最小连接池数量max-active: 20 # 最大连接池数量max-wait: 600000 # 配置获取连接等待超时的时间单位毫秒time-between-eviction-runs-millis: 60000 # 配置间隔多久才进行一次检测检测需要关闭的空闲连接单位毫秒min-evictable-idle-time-millis: 300000 # 配置一个连接在池中最小生存的时间单位毫秒max-evictable-idle-time-millis: 900000 # 配置一个连接在池中最大生存的时间单位毫秒validation-query: SELECT 1 FROM DUAL # 配置检测连接是否有效test-while-idle: truetest-on-borrow: falsetest-on-return: falseprimary: masterdatasource:master:name: ruoyi-vue-prourl: jdbc:mysql://127.0.0.1:3306/${spring.datasource.dynamic.datasource.master.name}?allowMultiQueriestrueuseUnicodetrueuseSSLfalsecharacterEncodingUTF-8serverTimezoneAsia/ShanghaiautoReconnecttruenullCatalogMeansCurrenttrue # MySQL Connector/J 8.X 连接的示例# url: jdbc:mysql://127.0.0.1:3306/${spring.datasource.dynamic.datasource.master.name}?useSSLfalseallowPublicKeyRetrievaltrueuseUnicodetruecharacterEncodingUTF-8serverTimezoneCTT # MySQL Connector/J 5.X 连接的示例# url: jdbc:postgresql://127.0.0.1:5432/${spring.datasource.dynamic.datasource.slave.name} # PostgreSQL 连接的示例# url: jdbc:oracle:thin:127.0.0.1:1521:xe # Oracle 连接的示例# url: jdbc:sqlserver://127.0.0.1:1433;DatabaseName${spring.datasource.dynamic.datasource.master.name} # SQLServer 连接的示例username: rootpassword: root# username: sa# password: JSm:g(*%lU4ZAkz06cd52KqT3)i1?H7Wslave: # 模拟从库可根据自己需要修改name: ruoyi-vue-prourl: jdbc:mysql://127.0.0.1:3306/${spring.datasource.dynamic.datasource.slave.name}?allowMultiQueriestrueuseUnicodetrueuseSSLfalsecharacterEncodingUTF-8serverTimezoneAsia/ShanghaiautoReconnecttruenullCatalogMeansCurrenttrue # MySQL Connector/J 8.X 连接的示例# url: jdbc:mysql://127.0.0.1:3306/${spring.datasource.dynamic.datasource.slave.name}?useSSLfalseallowPublicKeyRetrievaltrueuseUnicodetruecharacterEncodingUTF-8serverTimezoneCTT # MySQL Connector/J 5.X 连接的示例# url: jdbc:postgresql://127.0.0.1:5432/${spring.datasource.dynamic.datasource.slave.name} # PostgreSQL 连接的示例# url: jdbc:oracle:thin:127.0.0.1:1521:xe # Oracle 连接的示例# url: jdbc:sqlserver://127.0.0.1:1433;DatabaseName${spring.datasource.dynamic.datasource.slave.name} # SQLServer 连接的示例username: rootpassword: root# username: sa# password: JSm:g(*%lU4ZAkz06cd52KqT3)i1?H7W#shardingsphere相关配置# 分库分表配置#shardingsphere相关配置shardingsphere:datasource:names: m1 #配置库的名字随意m1: #配置目前m1库的数据源信息type: com.alibaba.druid.pool.DruidDataSourcedriverClassName: com.mysql.jdbc.Driverurl: jdbc:mysql://localhost:3306/ruoyi-vue-pro?useUnicodetruecharacterEncodingUTF-8useSSLfalseusername: rootpassword: rootsharding:tables:system_dept: # 指定t_order表的数据分布情况配置数据节点actualDataNodes: m1.system_dept_$-{1..8}tableStrategy: #分表策略, 可选项有 inline, standard, complex, hint, noneinline: # 指定t_order表的分片策略分片策略包括分片键和分片算法 #inline行表达式分片策略- 根据单一分片键进行精确分片shardingColumn: idalgorithmExpression: system_dept_$-{id % 8 1}# keyGenerator: # 指定t_order表的主键生成策略为SNOWFLAKE# column: order_id #指定主键# type: SNOWFLAKE #主键生成策略为SNOWFLAKEdefault-data-source-name: m1 #不使用分表分库策略的数据源props:sql:show: true
3.引入的jar包 -- 这个jar放到mybatisjar包前面--dependencygroupIdorg.mybatis/groupIdartifactIdmybatis-typehandlers-jsr310/artifactIdversion1.0.1/version/dependencydependencygroupIdorg.apache.shardingsphere/groupIdartifactIdsharding-jdbc-spring-boot-starter/artifactIdversion4.0.0-RC1/version/dependency
4.数据库操作
正常操作就行不用加DS制定数据源
5.以下是可运行的例子
springboot2.7.17mybatisplus3.5.3.1,dynamic-datasource3.5.1
源码
https://download.csdn.net/download/xiaobijia/88516542 6.参考 【Sharding-JDBC】一 整合mybatis-plus 水平分表_mybatisplus水平分表-CSDN博客
多数据源数据库分库分表_多数据源分库分表_Amarone的博客-CSDN博客
Cause: java.sql.SQLFeatureNotSupportedException: getObject with type-CSDN博客
新版SpringBoot集成sharding-jdbc报shardingsphere.shardingjdbc.jdbc.unsupported.AbstractUnsupportedOperationConnection.isValid解决方案 - Laeni - 博客园 (cnblogs.com)