当前位置: 首页 > news >正文

南昌建设工程质量监督网站涿州注册公司流程和费用

南昌建设工程质量监督网站,涿州注册公司流程和费用,论坛网站免费建设模板下载,合肥电脑网站建站文章目录 1. 引言2. MyBatis-Plus简介3. 准备工作4. 配置数据源5. 配置MyBatis-Plus6. 创建实体类和Mapper接口7. 编写Service8. 控制器层9. 测试10. 数据库读写分离的原理11. 拓展11.1. 动态数据源11.2. 多数据源事务管理11.3. 多租户支持 12. 总结 #x1f389;Spring Boot … 文章目录 1. 引言2. MyBatis-Plus简介3. 准备工作4. 配置数据源5. 配置MyBatis-Plus6. 创建实体类和Mapper接口7. 编写Service8. 控制器层9. 测试10. 数据库读写分离的原理11. 拓展11.1. 动态数据源11.2. 多数据源事务管理11.3. 多租户支持 12. 总结 Spring Boot MyBatis-Plus实现数据库读写分离 ☆* o(≧▽≦)o *☆嗨~我是IT·陈寒✨博客主页IT·陈寒的博客该系列文章专栏架构设计其他专栏Java学习路线 Java面试技巧 Java实战项目 AIGC人工智能 数据结构学习文章作者技术和水平有限如果文中出现错误希望大家能指正 欢迎大家关注 ❤️ 1. 引言 在当今互联网应用中数据库读写分离是提高系统性能和稳定性的重要手段之一。通过将读操作和写操作分别路由到不同的数据库节点可以有效减轻数据库服务器的负担提升系统的整体性能。本文将介绍如何利用Spring Boot和MyBatis-Plus框架实现数据库读写分离并通过简单易懂的代码示例来详细说明每个步骤。 2. MyBatis-Plus简介 MyBatis-Plus是MyBatis的增强工具提供了许多实用的功能包括但不限于代码生成器、通用Mapper、分页插件等。在本文中我们将专注于使用MyBatis-Plus实现数据库读写分离。 3. 准备工作 在开始之前确保你的开发环境中已经安装了以下软件 JDK推荐使用JDK 8及以上版本MavenIntelliJ IDEA或Eclipse可选 在项目的pom.xml文件中添加MyBatis-Plus和数据库驱动的依赖 !-- MyBatis-Plus -- dependencygroupIdcom.baomidou/groupIdartifactIdmybatis-plus-boot-starter/artifactIdversion3.4.3.2/version /dependency!-- MySQL驱动 -- dependencygroupIdmysql/groupIdartifactIdmysql-connector-java/artifactIdversion8.0.26/version /dependency4. 配置数据源 在application.properties或application.yml中配置主库和从库的数据源 # 主库数据源配置 spring.datasource.master.urljdbc:mysql://localhost:3306/masterdb?useSSLfalseserverTimezoneUTC spring.datasource.master.usernameroot spring.datasource.master.passwordroot spring.datasource.master.driver-class-namecom.mysql.cj.jdbc.Driver# 从库数据源配置 spring.datasource.slave.urljdbc:mysql://localhost:3307/slavedb?useSSLfalseserverTimezoneUTC spring.datasource.slave.usernameroot spring.datasource.slave.passwordroot spring.datasource.slave.driver-class-namecom.mysql.cj.jdbc.Driver5. 配置MyBatis-Plus 创建一个配置类用于配置MyBatis-Plus的分页插件和动态数据源 import com.baomidou.mybatisplus.extension.plugins.PaginationInterceptor; import com.baomidou.mybatisplus.extension.spring.MybatisSqlSessionFactoryBean; import org.apache.ibatis.session.SqlSessionFactory; import org.mybatis.spring.annotation.MapperScan; import org.springframework.beans.factory.annotation.Qualifier; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; import org.springframework.jdbc.datasource.DataSourceTransactionManager; import org.springframework.transaction.PlatformTransactionManager;import javax.sql.DataSource;Configuration MapperScan(basePackages com.example.demo.mapper, sqlSessionFactoryRef sqlSessionFactory) public class MybatisPlusConfig {Bean(name sqlSessionFactory)public SqlSessionFactory sqlSessionFactory(Qualifier(dataSource) DataSource dataSource) throws Exception {MybatisSqlSessionFactoryBean sqlSessionFactoryBean new MybatisSqlSessionFactoryBean();sqlSessionFactoryBean.setDataSource(dataSource);return sqlSessionFactoryBean.getObject();}Bean(name transactionManager)public PlatformTransactionManager transactionManager(Qualifier(dataSource) DataSource dataSource) {return new DataSourceTransactionManager(dataSource);}Beanpublic PaginationInterceptor paginationInterceptor() {return new PaginationInterceptor();} }6. 创建实体类和Mapper接口 创建一个简单的实体类和对应的Mapper接口 // User.java import com.baomidou.mybatisplus.annotation.TableId; import com.baomidou.mybatisplus.annotation.TableName; import lombok.Data;Data TableName(user) public class User {TableIdprivate Long id;private String username;private String password; }// UserMapper.java import com.baomidou.mybatisplus.core.mapper.BaseMapper; import org.apache.ibatis.annotations.Mapper;Mapper public interface UserMapper extends BaseMapperUser { }7. 编写Service 创建Service层调用Mapper接口完成数据操作 // UserService.java import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import org.springframework.stereotype.Service;Service public class UserService extends ServiceImplUserMapper, User { }8. 控制器层 编写Controller层暴露接口供前端调用 // UserController.java import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.*;RestController RequestMapping(/users) public class UserController {private final UserService userService;Autowiredpublic UserController(UserService userService) {this.userService userService;}GetMapping(/{id})public User getUser(PathVariable Long id) {return userService.getById(id);}PostMappingpublic boolean createUser(RequestBody User user) {return userService.save(user);}PutMappingpublic boolean updateUser(RequestBody User user) {return userService.updateById(user);}DeleteMapping(/{id})public boolean deleteUser(PathVariable Long id) {return userService.removeById(id);} }9. 测试 启动Spring Boot应用程序访问相应的接口进行测试。通过日志可以看到MyBatis-Plus会在执行查询时根据一定的规则选择主库或从库。 10. 数据库读写分离的原理 数据库读写分离的实现原理主要通过在MyBatis-Plus中使用DataSource注解根据不同的操作选择不同的数据源。这里简要说明一下原理 创建多个数据源 配置文件中定义了主库和从库两个数据源。 配置动态数据源 在MybatisPlusConfig配置类中使用DynamicDataSource类包装主库和从库的数据源通过Primary注解标识主库。 自定义注解 创建DataSource注解用于标识Mapper方法应该使用哪个数据源。 AOP切面 利用AOP在Mapper方法执行前根据DataSource注解的值动态切换数据源。 11. 拓展 11.1. 动态数据源 切换策略 在实际应用中动态数据源切换的策略可以根据业务需求来定制。可以基于用户的读写操作比例、数据库实例的性能等因素灵活调整数据源切换的策略。 11.2. 多数据源事务管理 当涉及到跨数据源的事务时需要谨慎处理。可以通过使用分布式事务框架如Seata、TCC事务等来保障事务的一致性。 11.3. 多租户支持 在一些场景中需要为不同的租户提供独立的数据库此时可以考虑使用多租户架构并根据租户信息动态切换数据源。 12. 总结 通过本文的学习我们了解了如何利用Spring Boot和MyBatis-Plus实现数据库读写分离。这一策略在提升系统性能和稳定性方面有着显著的效果。通过合理配置数据源、使用MyBatis-Plus框架以及编写自定义注解和AOP切面我们成功地搭建了一个简单而完整的读写分离系统。 希望这篇文章对你理解Spring Boot和MyBatis-Plus的读写分离实现提供了帮助。在实际项目中可以根据具体的业务需求和性能要求调整和拓展这一方案。 结尾 ❤️ 感谢您的支持和鼓励 您可能感兴趣的内容 【Java面试技巧】Java面试八股文 - 掌握面试必备知识目录篇【Java学习路线】2023年完整版Java学习路线图【AIGC人工智能】Chat GPT是什么初学者怎么使用Chat GPT需要注意些什么【Java实战项目】SpringBootSSM实战打造高效便捷的企业级Java外卖订购系统【数据结构学习】从零起步学习数据结构的完整路径
http://www.huolong8.cn/news/445598/

相关文章:

  • 做网站如何写需求东莞市手机网站建设品牌
  • 如何做能切换语言的网站做网站1g1核够吗
  • 苏州做网站费用明细企业名录查询器免费版
  • 天猫网站设计苏州市网络科技有限公司
  • 中国建设招标网站首页网站建设大数据服务案例
  • 廊坊网站建设精灵宠物网站开发与实现
  • 门户营销型网站如何用google搜索产品关键词
  • 昆明网站建设解决方案企业建站平台
  • 吉林省可信网站认证牌匾网站建设公司龙华
  • 打开百度网站首页h5链接怎么做
  • 做网站需要哪些框架刚刚北京发生大事了
  • 程序员做网站给女朋友学校网站建设培训方案模板
  • ui做套网站多少钱建站方案书备案
  • asp.net 获取网站的绝对路径wordpress 评论登陆
  • 中国轻工建设公司网站网站策划书的撰写流程
  • 建设电影网站共享ip服务器做网站
  • 网站实现多模板切换小程序制作网站
  • 厦门做网站培训做动车哪个网站查
  • 好的做彩平图的网站手机网络营销方案
  • 网站设计费用志wordpress加密版权信息
  • 献县城市住房建设局网站wordpress 短信登录
  • 威海做网站推广的企业交通行业门户网站建设的必要性
  • 2015年友情链接网站源代码下载郑州网站建设公司排行榜
  • 要建一个网站该怎么做教学网站
  • 网站建设方案设计心得wordpress 目录
  • flash网站的制作网站建设的500字小结
  • 山东省和住房城乡建设厅网站购物网站怎么运营推广
  • 单位网站建设费用账务处理杭州昨晚发生大事了
  • 网站开发介绍人拿多少钱开发一套网站价格
  • 公司网站建设免费wordpress 修改默认路径