班级网站制作教程,上海网上推广优化,揭阳网站设计制作,无锡网站制作选哪家【超简单三分钟学会】Spring Boot 项目实现 MySQL 分库分表——用用户登录数据做示范
在这个教程中#xff0c;我们将通过一个简单的 用户登录表 示例#xff0c;来学习如何在 Spring Boot 项目中实现 MySQL 分库分表。通过这个分布式数据库的技术#xff0c;你将能够处理更…【超简单三分钟学会】Spring Boot 项目实现 MySQL 分库分表——用用户登录数据做示范在这个教程中我们将通过一个简单的用户登录表示例来学习如何在Spring Boot项目中实现MySQL 分库分表。通过这个分布式数据库的技术你将能够处理更大规模的数据量提高系统的性能和可扩展性。本教程适合的对象Spring Boot 初学者对 MySQL 分库分表有兴趣的开发者希望优化数据库性能的人️ 环境配置我们需要的开发环境配置如下Spring Boot 版本2.xMySQL 版本5.x 或 8.xShardingSphere-JDBC 版本3.x用于分库分表MyBatis用于操作数据库1. 引入必要的依赖在pom.xml文件中添加以下依赖dependencies!-- Spring Boot Starter Web --dependencygroupIdorg.springframework.boot/groupIdartifactIdspring-boot-starter-web/artifactId/dependency!-- ShardingSphere JDBC --dependencygroupIdorg.apache.shardingsphere/groupIdartifactIdsharding-jdbc-core/artifactIdversion5.0.0/version/dependency!-- MyBatis 框架 --dependencygroupIdorg.mybatis.spring.boot/groupIdartifactIdmybatis-spring-boot-starter/artifactIdversion2.2.0/version/dependency!-- Spring Boot Starter JDBC --dependencygroupIdorg.springframework.boot/groupIdartifactIdspring-boot-starter-jdbc/artifactId/dependency/dependencies2. 配置数据库连接分库分表在application.yml中配置数据库连接以及 ShardingSphere 的分库分表规则。application.yml配置示例spring:datasource:url:jdbc:mysql://localhost:3306/db1,localhost:3307/db2username:rootpassword:passworddriver-class-name:com.mysql.cj.jdbc.Driverhikari:maximum-pool-size:10minimum-idle:2# ShardingSphere 配置shardingsphere:datasource:names:ds0,ds1datasource:ds0:type:com.zaxxer.hikari.HikariDataSourcedriver-class-name:com.mysql.cj.jdbc.Driverurl:jdbc:mysql://localhost:3306/db0username:rootpassword:passwordds1:type:com.zaxxer.hikari.HikariDataSourcedriver-class-name:com.mysql.cj.jdbc.Driverurl:jdbc:mysql://localhost:3307/db1username:rootpassword:passwordsharding:tables:user_login:actual-data-nodes:ds$-{0..1}.user_login_$-{0..1}table-strategy:inline:sharding-column:user_idalgorithm-expression:user_login_$-{user_id % 2}配置解释数据源配置配置了ds0和ds1两个数据库分别连接到 MySQL 的不同数据库实例。分库分表配置通过user_id % 2来决定数据存储在哪个user_login_0或user_login_1表中。3. 创建数据库和表在 MySQL 中创建数据库和对应的分表。SQL 脚本CREATEDATABASEdb0;CREATEDATABASEdb1;-- 创建分库分表CREATETABLEdb0.user_login_0(user_idINTPRIMARYKEY,usernameVARCHAR(50),passwordVARCHAR(100),last_login_timeDATETIME);CREATETABLEdb0.user_login_1(user_idINTPRIMARYKEY,usernameVARCHAR(50),passwordVARCHAR(100),last_login_timeDATETIME);CREATETABLEdb1.user_login_0(user_idINTPRIMARYKEY,usernameVARCHAR(50),passwordVARCHAR(100),last_login_timeDATETIME);CREATETABLEdb1.user_login_1(user_idINTPRIMARYKEY,usernameVARCHAR(50),passwordVARCHAR(100),last_login_timeDATETIME);user_login_0和user_login_1表将根据user_id % 2来决定数据的存储位置。4. 编写 Mapper 接口和 Mapper XML 文件4.1 创建 Mapper 接口在mapper包下创建UserLoginMapper.java接口定义插入和查询方法。packagecom.example.demo.mapper;importcom.example.demo.model.UserLogin;importorg.apache.ibatis.annotations.Insert;importorg.apache.ibatis.annotations.Mapper;importorg.apache.ibatis.annotations.Select;importorg.apache.ibatis.annotations.Param;MapperpublicinterfaceUserLoginMapper{// 插入数据Insert(INSERT INTO user_login_${user_id % 2} (user_id, username, password, last_login_time) VALUES (#{userId}, #{username}, #{password}, #{lastLoginTime}))voidinsertUserLogin(UserLoginuserLogin);// 根据 user_id 查询数据Select(SELECT * FROM user_login_${user_id % 2} WHERE user_id #{userId})UserLogingetUserLoginById(Param(userId)intuserId);}4.2 创建 Mapper XML 文件然后在resources/mapper目录下创建UserLoginMapper.xml文件添加 SQL 语句映射。?xml version1.0 encodingUTF-8 ?mappernamespacecom.example.demo.mapper.UserLoginMapper!-- 插入用户登录数据 --insertidinsertUserLoginparameterTypecom.example.demo.model.UserLoginINSERT INTO user_login_${user_id % 2} (user_id, username, password, last_login_time) VALUES (#{userId}, #{username}, #{password}, #{lastLoginTime})/insert!-- 根据 user_id 查询用户登录信息 --selectidgetUserLoginByIdresultTypecom.example.demo.model.UserLoginSELECT * FROM user_login_${user_id % 2} WHERE user_id #{userId}/select/mapper4.3 创建UserLogin实体类在model包下创建UserLogin.java实体类。packagecom.example.demo.model;importjava.util.Date;publicclassUserLogin{privateintuserId;privateStringusername;privateStringpassword;privateDatelastLoginTime;// Getters and Setters}5. 测试与验证现在你可以通过 Spring Boot 应用来测试你的分库分表配置是否生效。启动 Spring Boot 项目。使用 Postman 或浏览器测试接口插入一条用户登录数据并查询。AutowiredprivateUserLoginMapperuserLoginMapper;publicvoidtestInsertAndQuery(){UserLoginuserLoginnewUserLogin();userLogin.setUserId(1);userLogin.setUsername(testuser);userLogin.setPassword(password);userLogin.setLastLoginTime(newDate());// 插入数据userLoginMapper.insertUserLogin(userLogin);// 查询数据UserLoginqueriedUseruserLoginMapper.getUserLoginById(1);System.out.println(queriedUser.getUsername());}END通过本教程你已经学会了如何在Spring Boot项目中使用MyBatis配置 MySQL 的分库分表。我们使用了一个简单的用户登录表作为示例带你一步步实现了分库分表的功能。这种方式不仅能优化数据库性能还能提高系统的可扩展性。如果你对本教程有任何疑问欢迎留言