网站手机客户端生成辽宁食品 中企动力网站建设
- 作者: 五速梦信息网
- 时间: 2026年06月19日 07:31
当前位置: 首页 > news >正文
网站手机客户端生成,辽宁食品 中企动力网站建设,给网站做视频怎么赚钱,自己制作一个网站需要多少钱文章目录 1 前言2、创建SpringBoot程序2.1、创建项目2.2、添加依赖2.3、生成实体类、service与Mapper1.5、配置读写分离 2、测试2.1、读写分离测试2.2、事务测试2.3、负载均衡测试 结语 1 前言 shardingshpere-jdbc定位为轻量级 Java 框架#xff0c;在 Java 的 JDBC 层提供的… 文章目录 1 前言2、创建SpringBoot程序2.1、创建项目2.2、添加依赖2.3、生成实体类、service与Mapper1.5、配置读写分离 2、测试2.1、读写分离测试2.2、事务测试2.3、负载均衡测试 结语 1 前言 shardingshpere-jdbc定位为轻量级 Java 框架在 Java 的 JDBC 层提供的额外服务。 它使用客户端直连数据库以 jar 包形式提供服务无需额外部署和依赖可理解为增强版的 JDBC 驱动完全兼容 JDBC 和各种 ORM 框架。 关于mysql配置主从复制可以参考之前写的文章0101docker mysql8镜像主从复制-运维-mysql 2、创建SpringBoot程序 2.1、创建项目 项目类型Spring Initializr SpringBoot脚手架http://start.aliyun.com 项目名sharding-jdbc-demo SpringBoot版本2.7.10 2.2、添加依赖 ?xml version1.0 encodingUTF-8? project xmlnshttp://maven.apache.org/POM/4.0.0 xmlns:xsihttp://www.w3.org/2001/XMLSchema-instancexsi:schemaLocationhttp://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsdmodelVersion4.0.0/modelVersiongroupIdcom.gaogzhen/groupIdartifactIdsharging-jdbc-demo/artifactIdversion0.0.1-SNAPSHOT/versionnamesharging-jdbc-demo/namedescriptionDemo project for Spring Boot/descriptionparentgroupIdorg.springframework.boot/groupIdartifactIdspring-boot-starter-parent/artifactIdversion2.7.10/versionrelativePath //parentpropertiesjava.version1.8/java.versionproject.build.sourceEncodingUTF-8/project.build.sourceEncodingproject.reporting.outputEncodingUTF-8/project.reporting.outputEncodingspring-boot.version2.7.10/spring-boot.version/propertiesdependenciesdependencygroupIdorg.springframework.boot/groupIdartifactIdspring-boot-starter/artifactId/dependencydependencygroupIdorg.springframework.boot/groupIdartifactIdspring-boot-starter-web/artifactId/dependencydependencygroupIdorg.apache.shardingsphere/groupIdartifactIdshardingsphere-jdbc-core-spring-boot-starter/artifactIdversion5.1.1/version/dependencydependencygroupIdcom.mysql/groupIdartifactIdmysql-connector-j/artifactId/dependencydependencygroupIdcom.baomidou/groupIdartifactIdmybatis-plus-boot-starter/artifactIdversion3.3.1/version/dependencydependencygroupIdorg.projectlombok/groupIdartifactIdlombok/artifactIdoptionaltrue/optional/dependencydependencygroupIdorg.springframework.boot/groupIdartifactIdspring-boot-starter-test/artifactIdscopetest/scope/dependency/dependenciesbuildpluginsplugingroupIdorg.apache.maven.plugins/groupIdartifactIdmaven-compiler-plugin/artifactIdversion3.8.1/versionconfigurationsource1.8/sourcetarget1.8/targetencodingUTF-8/encoding/configuration/pluginplugingroupIdorg.springframework.boot/groupIdartifactIdspring-boot-maven-plugin/artifactIdversion${spring-boot.version}/versionconfigurationmainClasscom.gaogzhen.shardingjdbcdemo.ShardingJdbcDemoApplication/mainClass/configurationexecutionsexecutionidrepackage/idgoalsgoalrepackage/goal/goals/execution/executions/plugin/plugins/build/project2.3、生成实体类、service与Mapper 使用idea插件mybatisX根据数据库连接表生成实体类、service、mapper 第一步如下图2.3-1所示 第二步如下图2.3-2所示: 实体类 package com.gaogzhen.shardingjdbcdemo.entity;import com.baomidou.mybatisplus.annotation.IdType; import com.baomidou.mybatisplus.annotation.TableField; import com.baomidou.mybatisplus.annotation.TableId; import com.baomidou.mybatisplus.annotation.TableName; import java.io.Serializable; import lombok.Data;/*** 用户* author gaogzhen* TableName t_user/ TableName(value t_user) Data public class User implements Serializable {TableField(exist false)private static final long serialVersionUID 1L;TableId(type IdType.AUTO)private Long id;/** 用户名*/private String name;}service package com.gaogzhen.shardingjdbcdemo.service;import com.gaogzhen.shardingjdbcdemo.entity.User; import com.baomidou.mybatisplus.extension.service.IService;/**
author gaogzhen
description 针对表【t_user】的数据库操作Service
createDate 2023-08-13 15:37:14 */ public interface UserService extends IServiceUser {}serviceImpl package com.gaogzhen.shardingjdbcdemo.service.impl;import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.gaogzhen.shardingjdbcdemo.entity.User; import com.gaogzhen.shardingjdbcdemo.service.UserService; import com.gaogzhen.shardingjdbcdemo.mapper.UserMapper; import org.springframework.stereotype.Service;/**
author gaogzhen
description 针对表【t_user】的数据库操作Service实现
createDate 2023-08-13 15:37:14 */ Service public class UserServiceImpl extends ServiceImplUserMapper, Userimplements UserService{}mapper package com.gaogzhen.shardingjdbcdemo.mapper;import com.baomidou.mybatisplus.core.mapper.BaseMapper; import com.gaogzhen.shardingjdbcdemo.entity.User; import org.apache.ibatis.annotations.Mapper;/**
author gaogzhen
description 针对表【t_user】的数据库操作Mapper
createDate 2023-08-13 15:37:14
Entity com.gaogzhen.shardingjdbcdemo.entity.User */ Mapper public interface UserMapper extends BaseMapperUser {}1.5、配置读写分离 application.properties
应用名称
spring.application.namesharging-jdbc-demo
开发环境设置
spring.profiles.activedev
内存模式
spring.shardingsphere.mode.typeMemory# 配置真实数据源 spring.shardingsphere.datasource.namesmaster,slave1,slave2# 配置第 1 个数据源 spring.shardingsphere.datasource.master.typecom.zaxxer.hikari.HikariDataSource spring.shardingsphere.datasource.master.driver-class-namecom.mysql.jdbc.Driver spring.shardingsphere.datasource.master.jdbc-urljdbc:mysql://127.0.0.1:3340/db_user?allowPublicKeyRetrievaltrueuseSSLfalse spring.shardingsphere.datasource.master.usernameroot spring.shardingsphere.datasource.master.password123456# 配置第 2 个数据源 spring.shardingsphere.datasource.slave1.typecom.zaxxer.hikari.HikariDataSource spring.shardingsphere.datasource.slave1.driver-class-namecom.mysql.jdbc.Driver spring.shardingsphere.datasource.slave1.jdbc-urljdbc:mysql://127.0.0.1:3341/db_user?allowPublicKeyRetrievaltrueuseSSLfalse spring.shardingsphere.datasource.slave1.usernameroot spring.shardingsphere.datasource.slave1.password123456# 配置第 3 个数据源 spring.shardingsphere.datasource.slave2.typecom.zaxxer.hikari.HikariDataSource spring.shardingsphere.datasource.slave2.driver-class-namecom.mysql.jdbc.Driver spring.shardingsphere.datasource.slave2.jdbc-urljdbc:mysql://127.0.0.1:3342/db_user?allowPublicKeyRetrievaltrueuseSSLfalse spring.shardingsphere.datasource.slave2.usernameroot spring.shardingsphere.datasource.slave2.password123456# 读写分离类型如: StaticDynamic spring.shardingsphere.rules.readwrite-splitting.data-sources.myds.typeStatic
写数据源名称
spring.shardingsphere.rules.readwrite-splitting.data-sources.myds.props.write-data-source-namemaster
读数据源名称多个从数据源用逗号分隔
spring.shardingsphere.rules.readwrite-splitting.data-sources.myds.props.read-data-source-namesslave1,slave2# 负载均衡算法名称 spring.shardingsphere.rules.readwrite-splitting.data-sources.myds.load-balancer-namealg_round# 负载均衡算法配置
负载均衡算法类型
spring.shardingsphere.rules.readwrite-splitting.load-balancers.alg_round.typeROUND_ROBIN spring.shardingsphere.rules.readwrite-splitting.load-balancers.alg_random.typeRANDOM spring.shardingsphere.rules.readwrite-splitting.load-balancers.alg_weight.typeWEIGHT spring.shardingsphere.rules.readwrite-splitting.load-balancers.alg_weight.props.slave11 spring.shardingsphere.rules.readwrite-splitting.load-balancers.alg_weight.props.slave22# 打印SQl spring.shardingsphere.props.sql-showtrue# mybatis plus 配置 mybatis.mapper-locationsclasspath:mapper/.xml mybatis.type-aliases-packagecom.gaogzhen.shardingjdbcdemo.entity myds为自定义的逻辑数据源名称当前生效的负载均衡算法为轮询可以通过更换负载均衡算法名称来测试随机和权重。 2、测试 2.1、读写分离测试 package com.gaogzhen.shardingjdbcdemo;import com.gaogzhen.shardingjdbcdemo.entity.User; import com.gaogzhen.shardingjdbcdemo.mapper.UserMapper; import org.junit.jupiter.api.Test; import org.springframework.boot.test.context.SpringBootTest; import org.springframework.transaction.annotation.Transactional;import javax.annotation.Resource; import java.util.List;SpringBootTest public class ReadWriteTest {Resourceprivate UserMapper userMapper;/** 读写分离写入数据的测试/Testpublic void testInsert(){User user new User();user.setName(张三);userMapper.insert(user);User user1 userMapper.selectById(1L);}} 2.2、事务测试 为了保证主从库间的事务一致性避免跨服务的分布式事务ShardingSphere-JDBC的主从模型中事务中的数据读写均用主库。 不添加Transactionalinsert对主库操作select对从库操作添加Transactional则insert和select均对主库操作注意在JUnit环境下的Transactional注解默认情况下就会对事务进行回滚即使在没加注解Rollback也会对事务回滚 /** 事务测试/TransactionalTestpublic void testTrans() {User user new User();user.setName(xxx001);userMapper.insert(user);ListUser users userMapper.selectList(null);}2.3、负载均衡测试 /** 负载均衡测试/ Test public void testLoadBalance() {ListUser users1 userMapper.selectList(null);ListUser users2 userMapper.selectList(null);}也可以在web请求中测试负载均衡 package com.gaogzhen.shardingjdbcdemo.controller;import com.gaogzhen.shardingjdbcdemo.entity.User; import com.gaogzhen.shardingjdbcdemo.service.UserService; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController;import javax.annotation.Resource; import java.util.List;RestController RequestMapping(/user) public class UserController {Resourceprivate UserService userService;/** 测试负载均衡策略*/GetMapping(selectAll)public void selectAll(){ListUser users userService.list();users.forEach(System.out::println);} }命令行测试结果如下图所示 结语 如果小伙伴什么问题或者指教欢迎交流。 QQ:806797785 仓库源代码地址https://github.com/gaogzhen/shardingsphere-jdbc-demo.git 参考链接: [1]ShardingSphere5实战教程[CP/OL].2022-09-14.p18-23. [2]mysql官网使用配置文件文档[CP/OL].
- 上一篇: 网站手机端排名怎么做值得信赖的深圳app开发公司
- 下一篇: 网站手机优化显示app软件下载入口
相关文章
-
网站手机端排名怎么做值得信赖的深圳app开发公司
网站手机端排名怎么做值得信赖的深圳app开发公司
- 技术栈
- 2026年06月19日
-
网站手机端建设the word 和 wordpress
网站手机端建设the word 和 wordpress
- 技术栈
- 2026年06月19日
-
网站手机端打不开商务网站建设与推广实训意义
网站手机端打不开商务网站建设与推广实训意义
- 技术栈
- 2026年06月19日
-
网站手机优化显示app软件下载入口
网站手机优化显示app软件下载入口
- 技术栈
- 2026年06月19日
-
网站手机源码seo按天计费系统
网站手机源码seo按天计费系统
- 技术栈
- 2026年06月19日
-
网站首页 如何设置可以制作网站的软件是什么
网站首页 如何设置可以制作网站的软件是什么
- 技术栈
- 2026年06月19日
