电脑知识|欧美黑人一区二区三区|软件|欧美黑人一级爽快片淫片高清|系统|欧美黑人狂野猛交老妇|数据库|服务器|编程开发|网络运营|知识问答|技术教程文章 - 好吧啦网

您的位置:首頁技術文章
文章詳情頁

SpringBoot整合Sharding-JDBC實現MySQL8讀寫分離

瀏覽:3日期:2023-02-21 13:30:17
目錄一.前言二.項目目錄結構三.pom文件四.配置文件(基于YAML)及SQL建表語句五.Mapper.xml文件及Mapper接口六 .Controller及Mocel文件七.結果八.Sharding-JDBC不同版本上的配置一.前言

這是一個基于SpringBoot整合Sharding-JDBC實現讀寫分離的極簡教程,筆者使用到的技術及版本如下:

SpringBoot 2.5.2 MyBatis-Plus 3.4.3 Sharding-JDBC 4.1.1 MySQL8集群(看筆者前一篇文章有部署教程)二.項目目錄結構

SpringBoot整合Sharding-JDBC實現MySQL8讀寫分離

三.pom文件

<?xml version='1.0' encoding='UTF-8'?><project xmlns='http://maven.apache.org/POM/4.0.0' xmlns:xsi='http://www.w3.org/2001/XMLSchema-instance' xsi:schemaLocation='http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd'> <modelVersion>4.0.0</modelVersion> <parent><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-parent</artifactId><version>2.5.2</version><relativePath/> <!-- lookup parent from repository --> </parent> <groupId>xyz.hcworld</groupId> <artifactId>sharding-jdbc-demo</artifactId> <version>0.0.1-SNAPSHOT</version> <name>sharding-jdbc-demo</name> <description>多數據源切換實例</description> <properties><java.version>1.8</java.version> </properties> <dependencies><dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId></dependency><!-- mybatis-plus依賴 --><dependency> <groupId>com.baomidou</groupId> <artifactId>mybatis-plus-boot-starter</artifactId> <version>3.4.3</version></dependency><!-- mysql驅動 --><dependency> <groupId>mysql</groupId> <artifactId>mysql-connector-java</artifactId> <scope>runtime</scope></dependency><!-- sharding-jdbc(多數據源切換) --><dependency> <groupId>org.apache.shardingsphere</groupId> <artifactId>sharding-jdbc-spring-boot-starter</artifactId> <version>4.1.1</version></dependency><dependency> <groupId>org.projectlombok</groupId> <artifactId>lombok</artifactId> <optional>true</optional></dependency><dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-test</artifactId> <scope>test</scope></dependency> </dependencies> <build><plugins> <plugin><groupId>org.springframework.boot</groupId><artifactId>spring-boot-maven-plugin</artifactId><configuration> <excludes><exclude> <groupId>org.projectlombok</groupId> <artifactId>lombok</artifactId></exclude> </excludes></configuration> </plugin></plugins> </build></project>四.配置文件(基于YAML)及SQL建表語句

spring: main: allow-bean-definition-overriding: true #顯示sql shardingsphere: props: sql:show: true masterslave: #配置主從名稱 name: ms #置主庫master,負責數據的寫入 master-data-source-name: ds1 #配置從庫slave節點 slave-data-source-names: ds2,ds3 #配置slave節點的負載均衡均衡策略,采用輪詢機制,有兩種算法:round_robin(輪詢)和random(隨機) load-balance-algorithm-type: round_robin sharding: #配置默認數據源ds1 默認數據源,主要用于寫 default-data-source-name: ds1 # 配置數據源 datasource: names: ds1,ds2,ds3 #master-ds1數據庫連接信息 ds1:type: com.zaxxer.hikari.HikariDataSourcedriver-class-name: com.mysql.cj.jdbc.Driverjdbc-url: jdbc:mysql://192.168.2.142:3307/sharding-jdbc-db?useUnicode=true&useSSL=false&serverTimezone=Asia/Shanghaiusername: rootpassword: 123456maxPoolSize: 100minPoolSize: 5 #slave-ds2數據庫連接信息 ds2:type: com.zaxxer.hikari.HikariDataSourcedriver-class-name: com.mysql.cj.jdbc.Driverjdbc-url: jdbc:mysql://192.168.2.142:3308/sharding-jdbc-db?useUnicode=true&useSSL=false&serverTimezone=Asia/Shanghaiusername: rootpassword: 123456maxPoolSize: 100minPoolSize: 5 #slave-ds3數據庫連接信息 ds3:type: com.zaxxer.hikari.HikariDataSourcedriver-class-name: com.mysql.cj.jdbc.Driverjdbc-url: jdbc:mysql://192.168.2.142:3309/sharding-jdbc-db?useUnicode=true&useSSL=false&serverTimezone=Asia/Shanghaiusername: rootpassword: 123456maxPoolSize: 100minPoolSize: 5#mybatis-plus配置mybatis-plus: type-aliases-package: xyz.hcworld.demo.model mapper-locations: classpath*:/mapper/**Mapper.xml

CREATE TABLE `t_user` ( `id` int(11) NOT NULL AUTO_INCREMENT, `nickname` varchar(100) DEFAULT NULL, `password` varchar(100) DEFAULT NULL, `sex` int(11) DEFAULT NULL, `birthday` varchar(50) DEFAULT NULL, PRIMARY KEY (`id`)) ENGINE=InnoDB AUTO_INCREMENT=1 DEFAULT CHARSET=utf8mb4;五.Mapper.xml文件及Mapper接口

<?xml version='1.0' encoding='UTF-8'?><!DOCTYPE mapper PUBLIC '-//mybatis.org//DTD Mapper 3.0//EN' 'http://mybatis.org/dtd/mybatis-3-mapper.dtd'><mapper namespace='xyz.hcworld.demo.mapper.UserMapper'> <update id='addUser'>INSERT INTO t_user(nickname,PASSWORD,sex,birthday) VALUES(#{nickname},#{password},#{sex},#{birthday}) </update> <select resultType='xyz.hcworld.demo.model.User'>SELECT id, nickname, PASSWORD, sex, birthdayFROM t_user; </select></mapper>

package xyz.hcworld.demo.mapper;import com.baomidou.mybatisplus.core.mapper.BaseMapper;import org.springframework.stereotype.Component;import xyz.hcworld.demo.model.User;import java.util.List;/** * @ClassName: UserMapper * @Author: 張紅塵 * @Date: 2021-07-20 * @Version: 1.0 */@Componentpublic interface UserMapper extends BaseMapper<User> { void addUser(User user); List<User> findUsers();}六 .Controller及Mocel文件

package xyz.hcworld.demo.controller;import org.springframework.beans.factory.annotation.Autowired;import org.springframework.web.bind.annotation.GetMapping;import org.springframework.web.bind.annotation.PostMapping;import org.springframework.web.bind.annotation.RequestMapping;import org.springframework.web.bind.annotation.RestController;import xyz.hcworld.demo.mapper.UserMapper;import xyz.hcworld.demo.model.User;import java.security.SecureRandom;import java.util.List;/** * @ClassName: UserController * @Author: 張紅塵 * @Date: 2021-07-20 * @Version: 1.0 */@RestController@RequestMapping('/api/user')public class UserController { @Autowired private UserMapper userMapper; @PostMapping('/save') public String addUser() {User user = new User();user.setNickname('zhangsan' + new SecureRandom().nextInt());user.setPassword('123456');user.setSex(1);user.setBirthday('1997-12-03');userMapper.addUser(user);return user.toString(); } @GetMapping('/findUsers') public List<User> findUsers() {return userMapper.findUsers(); }}

package xyz.hcworld.demo.model;import com.baomidou.mybatisplus.annotation.IdType;import com.baomidou.mybatisplus.annotation.TableId;import com.baomidou.mybatisplus.annotation.TableName;import lombok.Data;import lombok.EqualsAndHashCode;/** * @ClassName: User * @Author: 張紅塵 * @Date: 2021-07-20 * @Version: 1.0 */@Data@TableName('t_user')public class User { private static final long serialVersionUID = 1L; @TableId(value = 'id', type = IdType.AUTO) private Integer id; private String nickname; private String password; private Integer sex; private String birthday;}七.結果

從結果可以看出,寫入操作全部通過ds1數據庫(master)數據庫完成,而讀操作因為設置了輪詢的緣故,由ds2(slaver)、ds3(slaver2)數據庫完成。這樣就實現了基于一主二從的數據庫集群的讀寫分離操作。

SpringBoot整合Sharding-JDBC實現MySQL8讀寫分離

八.Sharding-JDBC不同版本上的配置

網上Sharding-JDBC的教程多為4.0.0.RC1版本,筆者使用的是最新的4.1.1所以在該部分數據庫地址在4.1.1為jdbc-url在4.0.0.RC1上需要改為url否則會啟動失敗

jdbc-url: jdbc:mysql://XXXX/XXXX

且網上教程多為properties文件,筆者將其轉變為YAML文件更加能直觀感受

項目下載

GitHub:https://github.com/z875479694h/sharding-jdbc-demo

到此這篇關于SpringBoot整合Sharding-JDBC實現MySQL8讀寫分離的文章就介紹到這了,更多相關SpringBoot Sharding-JDBC MySQL8讀寫分離內容請搜索好吧啦網以前的文章或繼續瀏覽下面的相關文章希望大家以后多多支持好吧啦網!

標簽: Spring
相關文章:
主站蜘蛛池模板: 蔬菜清洗机_环速洗菜机_异物去除清洗机_蔬菜清洗机_商用洗菜机 - 环速科技有限公司 | 沈阳真空机_沈阳真空包装机_沈阳大米真空包装机-沈阳海鹞真空包装机械有限公司 | 冷却塔降噪隔音_冷却塔噪声治理_冷却塔噪音处理厂家-广东康明冷却塔降噪厂家 | 电抗器-能曼电气-电抗器专业制造商 | led冷热冲击试验箱_LED高低温冲击试验箱_老化试验箱-爱佩百科 | 江门流水线|江门工作台|江门市伟涛行工业设备有限公司 | 闪蒸干燥机-喷雾干燥机-带式干燥机-桨叶干燥机-[常州佳一干燥设备] | 锂电混合机-新能源混合机-正极材料混料机-高镍,三元材料混料机-负极,包覆混合机-贝尔专业混合混料搅拌机械系统设备厂家 | 六维力传感器_六分量力传感器_模腔压力传感器-南京数智微传感科技有限公司 | 郑州墨香品牌设计公司|品牌全案VI设计公司 | 制丸机,小型中药制丸机,全自动制丸机价格-甘肃恒跃制药设备有限公司 | 模型公司_模型制作_沙盘模型报价-中国模型网 | 臭氧灭菌箱-油桶加热箱-原料桶加热融化烘箱-南京腾阳干燥设备厂 臭氧发生器_臭氧消毒机 - 【同林品牌 实力厂家】 | 微信聊天记录恢复_手机短信删除怎么恢复_通讯录恢复软件下载-快易数据恢复 | 合肥制氮机_合肥空压机厂家_安徽真空泵-凯圣精机 | 沧州友城管业有限公司-内外涂塑钢管-大口径螺旋钢管-涂塑螺旋管-保温钢管生产厂家 | 光泽度计_测量显微镜_苏州压力仪_苏州扭力板手维修-苏州日升精密仪器有限公司 | 上海电子秤厂家,电子秤厂家价格,上海吊秤厂家,吊秤供应价格-上海佳宜电子科技有限公司 | 九爱图纸|机械CAD图纸下载交流中心 | 德州网站开发定制-小程序开发制作-APP软件开发-「两山开发」 | 内窥镜-工业内窥镜厂家【上海修远仪器仪表有限公司】 | 黄石妇科医院_黄石东方女子医院_黄石东方妇产医院怎么样 | 医疗仪器模块 健康一体机 多参数监护仪 智慧医疗仪器方案定制 血氧监护 心电监护 -朗锐慧康 | 定硫仪,量热仪,工业分析仪,马弗炉,煤炭化验设备厂家,煤质化验仪器,焦炭化验设备鹤壁大德煤质工业分析仪,氟氯测定仪 | 求是网 - 思想建党 理论强党 | 振动筛-交叉筛-螺旋筛-滚轴筛-正弦筛-方形摇摆筛「新乡振动筛厂家」 | China plate rolling machine manufacturer,cone rolling machine-Saint Fighter | 磁力反应釜,高压釜,实验室反应釜,高温高压反应釜-威海自控反应釜有限公司 | 吉林污水处理公司,长春工业污水处理设备,净水设备-长春易洁环保科技有限公司 | 土壤检测仪器_行星式球磨仪_土壤团粒分析仪厂家_山东莱恩德智能科技有限公司 | 智能门锁电机_智能门锁离合器_智能门锁电机厂家-温州劲力智能科技有限公司 | 贵州成人高考网_贵州成考网 | 微量水分测定仪_厂家_卡尔费休微量水分测定仪-淄博库仑 | 短信通106短信接口验证码接口群发平台_国际短信接口验证码接口群发平台-速度网络有限公司 | 恒温振荡混匀器-微孔板振荡器厂家-多管涡旋混匀器厂家-合肥艾本森(www.17world.net) | 水质监测站_水质在线分析仪_水质自动监测系统_多参数水质在线监测仪_水质传感器-山东万象环境科技有限公司 | 中央空调维修、中央空调保养、螺杆压缩机维修-苏州东菱空调 | 便携式高压氧舱-微压氧舱-核生化洗消系统-公众洗消站-洗消帐篷-北京利盟救援 | 道达尔润滑油-食品级润滑油-道达尔导热油-合成导热油,深圳道达尔代理商合-深圳浩方正大官网 | 服务器之家 - 专注于服务器技术及软件下载分享 | 智能汉显全自动量热仪_微机全自动胶质层指数测定仪-鹤壁市科达仪器仪表有限公司 |