SpringBoot2.0整合Sharding-Jdbc

SpringBoot 整合 Sharding-JDBC SpringBoot 整合 Mybatis Plus Sharding-JDBC 阅读详情

SpringBoot2.0整合Sharding-Jdbc

maven:

<parent>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-parent</artifactId>
        <version>2.0.3.RELEASE</version>
        <relativePath /> <!-- lookup parent from repository -->
    </parent>
    <properties>
        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
        <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
        <java.version>1.8</java.version>
    </properties>

    <dependencies>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>

        <dependency>
            <groupId>org.projectlombok</groupId>
            <artifactId>lombok</artifactId>
            <optional>true</optional>
        </dependency>
        <dependency>
            <groupId>com.baomidou</groupId>
            <artifactId>mybatis-plus-boot-starter</artifactId>
            <version>3.0-beta</version>
        </dependency>
        <dependency>
            <groupId>io.shardingjdbc</groupId>
            <artifactId>sharding-jdbc-core</artifactId>
            <version>2.0.3</version>
        </dependency>
        <dependency>
            <groupId>mysql</groupId>
            <artifactId>mysql-connector-java</artifactId>
        </dependency>
    </dependencies>

    <build>
        <plugins>
            <plugin>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-maven-plugin</artifactId>
            </plugin>
        </plugins>

    </build>

 

yml:

mybatis-plus:
#  mapper-locations: classpath*:/mapper/*.xml
  global-config:
    db-config:
      column-underline: true
#shardingjdbc配置      
sharding:
  jdbc:
    data-sources:
     ###配置第一个从数据库 名称随便起
      ds_slave_0:
        password: root
        jdbc-url: jdbc:mysql://192.168.91.9:3306/test?useUnicode=true&characterEncoding=utf-8&useSSL=true
        driver-class-name: com.mysql.jdbc.Driver
        username: root
      ###主数据库配置   名称随便起
      ds_master:
        password: root
        jdbc-url: jdbc:mysql://192.168.91.8:3306/test?useUnicode=true&characterEncoding=utf-8&useSSL=true
        driver-class-name: com.mysql.jdbc.Driver
        username: root
    ###配置读写分离    
    master-slave-rule:
    ###配置从库选择策略,提供轮询与随机,这里选择用轮询 如果从做了集群 查询时候做轮训查询
      load-balance-algorithm-type: round_robin
      ####指定从数据库 如果多个从 用逗号隔开
      slave-data-source-names: ds_slave_0
      name: ds_ms
      ####指定主数据库
      master-data-source-name: ds_master

config配置:

 

import java.sql.SQLException;
import java.util.Map;

import javax.sql.DataSource;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty;
import org.springframework.boot.context.properties.EnableConfigurationProperties;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;

import com.google.common.collect.Maps;

import io.shardingjdbc.core.api.MasterSlaveDataSourceFactory;
import lombok.extern.log4j.Log4j2;

@Configuration
@EnableConfigurationProperties(ShardingMasterSlaveConfig.class)
@Log4j2
// 读取ds_master主数据源和读写分离配置
@ConditionalOnProperty({ "sharding.jdbc.data-sources.ds_master.jdbc-url",
        "sharding.jdbc.master-slave-rule.master-data-source-name" })
public class ShardingDataSourceConfig {

    @Autowired
    private ShardingMasterSlaveConfig shardingMasterSlaveConfig;

    @Bean
    public DataSource masterSlaveDataSource() throws SQLException {
        final Map<String, DataSource> dataSourceMap = Maps.newHashMap();
        dataSourceMap.putAll(shardingMasterSlaveConfig.getDataSources());
        final Map<String, Object> newHashMap = Maps.newHashMap();
        // 创建 MasterSlave数据源
        DataSource dataSource = MasterSlaveDataSourceFactory.createDataSource(dataSourceMap,
                shardingMasterSlaveConfig.getMasterSlaveRule(), newHashMap);
        log.info("masterSlaveDataSource config complete");
        return dataSource;
    }

}

 

import java.util.HashMap;
import java.util.Map;

import org.springframework.boot.context.properties.ConfigurationProperties;

import com.zaxxer.hikari.HikariDataSource;

import io.shardingjdbc.core.api.config.MasterSlaveRuleConfiguration;
import lombok.Data;

@Data      //表示读取本底配置文件 前缀sharding.jdbc
@ConfigurationProperties(prefix = "sharding.jdbc")
public class ShardingMasterSlaveConfig {

    // 存放本地多个数据源   最终放在map集合中   key为yml配置的 ds_slave_0
    private Map<String, HikariDataSource> dataSources = new HashMap<>();

    private MasterSlaveRuleConfiguration masterSlaveRule;
}

 

上面为核心代码

下面是辅助的:

Controller:

import java.util.List;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

import com.mayikt.entity.UserEntity;
import com.mayikt.service.UserService;

@RestController
public class UserController {

    @Autowired
    private UserService userService;

    @RequestMapping("/findUser")
    public List<UserEntity> findUser() {
        return userService.findUser();
    }

    @RequestMapping("/insertUser")
    public String insertUser(String userName) {
        return userService.insertUser(userName) > 0 ? "success" : "fail";
    }

}

 

entity:

 

public class UserEntity {

    private String userName;

    public String getUserName() {
        return userName;
    }

    public void setUserName(String userName) {
        this.userName = userName;
    }

}

 

service:

import java.util.List;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

import com.mayikt.entity.UserEntity;
import com.mayikt.mapper.UserMapper;

@Service
public class UserService {
    @Autowired
    private UserMapper userMapper;

    // 使用读的数据源
    public List<UserEntity> findUser() {
        return userMapper.findUser();
    }

    // 使用写的数据源
    public int insertUser(String userName) {
        return userMapper.insertUser(userName);
    }

}

mapper:

 

import java.util.List;

import org.apache.ibatis.annotations.Insert;
import org.apache.ibatis.annotations.Param;
import org.apache.ibatis.annotations.Select;

import com.mayikt.entity.UserEntity;

public interface UserMapper {
    @Select("SELECT * FROM  user_info ")
    public List<UserEntity> findUser();

    @Insert("insert into user_info values (#{userName}); ")
    public int insertUser(@Param("userName") String userName);
}

 

启动类:

 

import org.mybatis.spring.annotation.MapperScan;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;

@SpringBootApplication
@MapperScan("com.toov5.mapper")
public class AppMbatis {
    public static void main(String[] args) {

        SpringApplication.run(AppMbatis.class, args);
    }
}

 

sharding-jdbc3.1.0整合SpringBoot 2.3.2数据分表 当数据量比较大的时候,比如单个表的数据量超过了1000W的数据,这时可以考虑将数据存储在不同的表中,比如将user表拆分为四个表user_0、user_1、 user_2、user_3装在四个表中。此时如图所示: 数据库准备 数据库类型 数据库 ip 主 readwrite 192.168.39.129 从 readwrite 192.168.39.130 从 readwrite 192.168.39.131 在主库初始化Mysql数. 阅读详情

相关推荐

避坑指南:Dify+Docker+Ollama离线部署实战与疑难解析

本文详细解析了在国产化系统(如银河麒麟V10)内网环境中,如何从零开始离线部署Dify、Docker与Ollama的全栈AI应用开发平台。文章重点拆解了Docker安装中的“没有Release文件”和“GPG密钥错误”等典型报错解决方案,并提供了Ollama离线模型导入与Dify连接配置的完整实战指南,旨在帮助开发者高效完成本地部署,避开常见陷阱。

dd012的博客 465

springboot整合ShardingJDBC实战及主要概念解析

ShardingSphere包含三个重要的产品,ShardingJDBC、ShardingProxy和ShardingSidecar。其中sidecar是针对service mesh定位的一个分库分表插件,目前在规划中;ShardingJDBC是用来做客户端分库分表的产品;而ShardingProxy是用来做服务端分库分表的产品。

qq_38639813的博客 2751

【Excel VBA 编程】表格内自动生成进度条

在表格中生成进度条,进度条需要自适应单元格的宽度,根据不同进度区间变换颜色,并且按照进度数据大小显示其长短

wei1019的专栏 1519

SpringBoot集成Sharding-jdbc(水平分表)

SpringBoot整合Sharding-JDBC实现水平分表

计算机小白的奋起 4026

Unity调用手机摄像头避坑指南:从权限检测到自动对焦问题解决

本文深入解析了Unity移动端集成手机摄像头时遇到的权限、对焦与性能等核心难题。针对权限管理,提供了健壮的原生接口调用方案;针对自动对焦模糊问题,详细对比了原生插件与第三方插件两种解决路径;并分享了分辨率选择、数据处理及功耗控制等关键性能优化技巧,帮助开发者构建稳定高效的摄像头功能。

weixin_29007243的博客 472

Sigmastar平台WDR调试实战:从参数解析到鬼影消除的完整指南

本文提供了Sigmastar平台宽动态(WDR)技术的实战调试指南。针对逆光、运动场景下的核心痛点,系统性地解析了从多曝光采集、HDR融合到色调映射的完整管线,并重点阐述了如何通过调整曝光比、运动阈值与调整曲线等关键参数,有效消除运动鬼影、平衡暗部噪声与细节,最终实现清晰稳定的图像效果。

Jerry的专栏 926

SpringBoot之Sharding-JDBC

Sharding-JDBC是一种用于分布式数据库的Java中间件,主要用于解决大数据量、高并发的数据访问问题。它基于JDBC实现,可以适用于主流数据库,并能有效地将单一的数据库自动拆分成多个数据库并行处理,从而提高查询性能,实现分布式存储和水平扩展。

蓝朽的小世界 951

(王道408考研数据结构)第一章绪论-第二节1:算法的基本概念、算法的特性及设计要求

算法(Algorithm):是解决特定问题求解步骤的描述,在计算机中表现为指令的有限序列,并且每条指令表示一个或多个操作王道视频课中讲到了一个例子,展示了算法就是解决问题的特定步骤的描述对于给定的问题可以有多种多样的算法来解决,只不过这些算法有各自的优点和缺点。

快乐江湖的博客 2684

Springboot 集成 Sharding-Jdbc

背景 一般来说数据库单表超过2000W性能就会急剧下降,我们就需要做相应的处理,分库分表,或者使用分布式数据库,而企业中较为常见的是分库分表。 分库分表目前主流的框架有两种,一种是MyCat,另一种是 ShardingSphere,就目前两种框架的整体功能来看应该是差不多,都是仅支持基本SQL92语法,复杂特殊的语法一般不支持。而Mycat是以中间件的方式给你做SQL聚合,需要搭建一个MyCat中间件,同时也要保证Mycat的高可用,如果MyCat一单挂掉,整个系统就挂了,使用MyCat变相增加了系统的复杂

念念不忘,必有回响 6253

Hermes Agent 安装部署完全指南

Hermes Agent安装部署指南提供了两种安装方式:一键脚本安装和手动分步安装。该AI助手支持多平台运行(Linux/macOS/WSL2),核心功能仅需Git作为前置依赖,其他依赖如Python、Node.js等均由安装脚本自动处理。文档详细介绍了系统要求、依赖管理、配置目录结构、环境变量设置以及10个手动安装步骤,并提供了功能模块化选项,用户可根据需求选择安装语音交互、浏览器自动化等扩展功能。安装完成后可通过hermes doctor命令验证环境,并通过交互式向导完成初始化配置。

简简单单Onlinezuozuo 2621

使用MiniExcel.SaveAsByTemplate快速地保存百万数据

该代码展示了如何使用MiniExcel快速生成并导出百万级销售数据。核心方法GenerateLargeData()可生成指定数量的随机销售记录,包含客户名、日期、VIP状态、积分等20个字段。通过随机函数模拟真实数据分布,并支持自定义数据量(默认100万条)。配合Excel模板使用MiniExcel.SaveAsByTemplate()方法,能高效地将大数据量导出为Excel文件,且处理速度极快。代码结构清晰,包含数据生成、随机日期辅助方法和数据模型类,适合需要批量生成测试数据或导出大型报表的场景。

大坡3D软件开发 253

Spring Boot整合Sharding JDBC 5.2.0分库分表Demo

Spring Boot整合Sharding JDBC 5.2.0分库分表Demo 去发现同类优质开源项目:https://gitcode.com/ 项目简介 本项目是一个Spring Boot整合Sharding JDBC 5.2.0的分库分表Demo。通过该Demo,你可以学习如何使用Sharding JDBC实现分库分表,并了解其内置算法以及如何自定义算法。项目中包含了详细的文档和注释,帮助你...

gitblog_09769的博客 714

【RT-DETR有效改进】利用MobileNetV3替换Backbone(轻量化网络结构,提点)

本文给大家带来的改进机制是,其主要改进思想集中在结合硬件感知的网络架构搜索(NAS)和NetAdapt算法,以优化移动设备CPU上的性能。它采用了新颖的架构设计,包括反转残差结构和线性瓶颈层,以及新的高效分割解码器Lite Reduced Atrous Spatial Pyramid Pooling(LR-ASPP),以提升在移动分类、检测和分割任务上的表现。实验表明,MobileNets在资源和准确性的权衡方面表现出色,并在多种应用(如对象检测、细粒度分类、面部属性识别和大规模地理定位)中展现了其有效性。

Snu77的博客 2748

SpringBoot2.0整合Sharding-Jdbc实现分库分表

文章目录1.Sharding-Jdbc介绍1.1. 简介1.2.水平分割2.利用SpringBoot实现分库分表2.1.数据源设定2.2.pom.xml添加相关依赖2.3.配置数据源及分库分表策略2.4.代码实现2.4.1.项目整体结构2.4.2.pojo层2.4.3.dao层2.4.4.service层2.4.5.controller层2.4.6.启动类3.测试分库分表3.1.添加数据3.2.查询数据3.3.总结 当业务发展到一定程度,分库分表是一种必然的要求,分库可以实现资源隔离,分表则可以降低单表数据

电商技术进阶 2251

假人有限元模型

假人模型,车辆碰撞假人有限元模型,适合做乘员安全的研究者利用

WINCC7.3破解文件

WINCC7.3硬件够破解文件,有需要的下载!WINCC7.3硬件够破解文件,有需要的下载!

【亲测免费】 Spring Boot整合Sharding JDBC 5.2.0分库分表Demo:高效数据分片解决方案

Spring Boot整合Sharding JDBC 5.2.0分库分表Demo:高效数据分片解决方案 去发现同类优质开源项目:https://gitcode.com/ 项目介绍 在现代应用开发中,随着数据量的不断增长,单一数据库往往难以满足性能和扩展性的需求。为了解决这一问题,分库分表技术应运而生。本项目是一个基于Spring Boot和Sharding JDBC 5.2.0的分库分表Demo,...

gitblog_09715的博客 933

Devexpress16.2.6破解工具

Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具

Spring Boot整合Sharding JDBC 5.2.0分库分表Demo:高效数据分片解决方案

Spring Boot整合Sharding JDBC 5.2.0分库分表Demo:高效数据分片解决方案 去发现同类优质开源项目:https://gitcode.com/ 项目介绍 在现代分布式系统中,随着数据量的不断增长,单一数据库往往难以满足高性能和高可用性的需求。为了解决这一问题,分库分表技术应运而生。本项目是一个基于Spring Boot和Sharding JDBC 5.2.0的分库分表De...

gitblog_09819的博客 400

LinePhone3.2.7(android端最新版本) sip客户端

SIP客户端For android:LinePhone3.2.7(最新版本),官网地址:http://www.linphone.org/

SpringBoot 2.0 整合sharding-jdbc中间件,实现数据分库分表

一、水平分割 1、水平分库 1)、概念: 以字段为依据,按照一定策略,将一个库中的数据拆分到多个库中。 2)、结果 每个库的结构都一样;数据都不一样; 所有库的并集是全量数据; 2、水平分表 1)、概念 以字段为依据,按照一定策略,将一个表中的数据拆分到多个表中。 2)、结果 每个表的结构都一样;数据都不一样; 所有表的并集是全量数据; 二、Shard-jdbc 中间件 1、架构图 2、特点 1...

weixin_30596165的博客 319

SpringBoot2.0高级案例(04): 整合sharding-jdbc中间件,实现数据分库分表

一、水平分割 1、水平分库 1)、概念: 以字段为依据,按照一定策略,将一个库中的数据拆分到多个库中。 2)、结果 每个库的结构都一样;数据都不一样; 所有库的并集是全量数据; 2、水平分表 1)、概念 以字段为依据,按照一定策略,将一个表中的数据拆分到多个表中。 2)、结果 每个表的结构都...

choujueluo6157的博客 200

崛起于Springboot之Mysql分库分表-Sharding-Jdbc(7)

为什么80%的码农都做不了架构师?>>> ...

weixin_34129696的博客 1407

springboot2.x整合各大组件demo

springboot2.x整合各大组件demo源码地址简介说明 源码地址 码云. GitHub. 简介 本项目用于实现springboot2.0x整合各个目前比较火热的组件,并形成作者自有的demo,可供其他人学习使用,所有的demo都是经过 作者自己严格测试。 说明 目前已经整合有: elasticsearch-demo 整合elasticsearch7.x实现数据的索引创建与查询 seata-demo 整合seata1.3实现springcloud alibaba下分布式事务 sharding-jdbc

weixin_39338370的博客 263

SpringCloud(16) 整合Seata+多数据源+sharding-jdbc

springcloud整合seata+多数据源+sharding-jdbc

郑清 3793

SpringBoot2整合Sharding-jdbc读写分离案例

3)、测试案例entity->mapper->service->controller。

hq.zheng的博客 354

springboot整合sharding-jdc实现分库分表遇到的坑

一、springboot2.X整合的是 &lt;dependency&gt; &lt;groupId&gt;io.shardingjdbc&lt;/groupId&gt; &lt;artifactId&gt;sharding-jdbc-core&lt;/artifactId&gt; &lt;version&gt;2.0.3...

wenzhenyu1990的专栏 1075

ShardingSphere实战:SpringBoot整合Sharding-JDBC实现分库分表

目录前言一、概念分库分表水平拆分垂直拆分二、使用步骤1.准备2.依赖3.配置4. 验证总结 前言 教你如何使用Sharding-JDBC实现对数据库的分库分表。 一、概念 分库分表 分库分表是当数据量大到一定程度时,对数据库、表进行一个合理拆分。以MySQL为例:单表的数据量建议最大不要超过千万级,索引树不要超过3层。否则就需对表进行水平拆分。 由于高并发下单库的性能受限以及服务器的性能等方面原因,为了更好的提供服务,也需要将数据进行分片存储。也就是分库。在Sharding-JDBC中,分库被称为数据分

qq_42394044的博客 857
上一篇: Sharding-Jdbc
下一篇: Sharding-Jdbc实现分表分库
Art&Code
博客等级 码龄7年 77粉丝 554原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值