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

淘宝上的网站怎么做当当网电子商务网站建设特点

淘宝上的网站怎么做,当当网电子商务网站建设特点,网站站长统计怎么弄,南通外贸网站建设一.需求背景 项目需要实现在多个数据源之间读写数据#xff0c;例如在 A 数据源和 B 数据源读取数据#xff0c;然后在 C 数据源写入数据 或者 部分业务数据从 A 数据源中读取、部分从B数据源中读取诸如此类需求。本文将简单模拟在SpringBoot项目中实现不同数据源之间读取数…一.需求背景 项目需要实现在多个数据源之间读写数据例如在 A 数据源和 B 数据源读取数据然后在 C 数据源写入数据 或者 部分业务数据从 A 数据源中读取、部分从B数据源中读取诸如此类需求。本文将简单模拟在SpringBoot项目中实现不同数据源之间读取数据。 二.技术概述 dynamic-datasource 是一个开源的 SpringBoot 多数据源启动器提供了丰富的功能使用者只需完成基本的数据源配置配合使用DS注解即可轻松实现多数据源之间的切换。其支持 Jdk 1.7, SpringBoot 1.5.x 2.x.x 3.x.x。JPA用户不建议使用JPA自带事务无法连续切库。 以下特性和约定摘录自官方文档dynamic-datasource 特性 支持 数据源分组 适用于多种场景 纯粹多库 读写分离 一主多从 混合模式。 支持数据库敏感配置信息 加密(可自定义) ENC()。 支持每个数据库独立初始化表结构schema和数据库database。 支持无数据源启动支持懒加载数据源需要的时候再创建连接。 支持 自定义注解 需继承DS(3.2.0)。 提供并简化对DruidHikariCpBeeCp,Dbcp2的快速集成。 提供对Mybatis-PlusQuartzShardingJdbcP6syJndi等组件的集成方案。 提供 自定义数据源来源 方案如全从数据库加载。 提供项目启动后 动态增加移除数据源 方案。 提供Mybatis环境下的 纯读写分离 方案。 提供使用 spel动态参数 解析数据源方案。内置spelsessionheader支持自定义。 支持 多层数据源嵌套切换 。ServiceA ServiceB ServiceC 提供 基于seata的分布式事务方案 。 提供 本地多数据源事务方案。 约定 本框架只做 切换数据源 这件核心的事情并不限制你的具体操作切换了数据源可以做任何CRUD。配置文件所有以下划线 _ 分割的数据源 首部 即为组的名称相同组名称的数据源会放在一个组下。切换数据源可以是组名也可以是具体数据源名称。组名则切换时采用负载均衡算法切换。、默认的数据源名称为 master 你可以通过 spring.datasource.dynamic.primary 修改。代码块里主动切换 方法上的注解优 类上注解就近原则DS支持继承抽象类上的DS支持继承接口上的DS。 注官网文档只有基础篇可免费查阅其他内容查阅需付费29.9因此如果基础篇所讲解功能无法满足需求业务场景比较复杂且不愿付费请勿使用本框架 三.编码实现 业务说明从A数据源查询出学生数据同时从B数据源查询出教师数据。 技术选型SpringBoot 2.7.6 MyBatis-Plus 3.5.4 MySQL 8.0 1引入Maven坐标 dependencygroupIdcom.baomidou/groupIdartifactIddynamic-datasource-spring-boot-starter/artifactIdversion3.5.2/version /dependency2创建模拟数据库表 # A 数据源 create DATABASE testA; use testA; CREATE TABLE student( id int, username VARCHAR(12) );# B 数据源 create DATABASE testB; use testB; CREATE TABLE teacher( id int, username VARCHAR(12) );3在yml文件中配置数据源 spring:datasource:dynamic:primary: testA #设置默认的数据源或者数据源组,默认值即为masterstrict: false #严格匹配数据源,默认false. true未匹配到指定数据源时抛异常,false使用默认数据源datasource:testA:driver-class-name: com.mysql.cj.jdbc.Driverurl: jdbc:mysql://localhost:3306/testAusername: rootpassword: roottestB:driver-class-name: com.mysql.cj.jdbc.Driverurl: jdbc:mysql://localhost:3306/testBusername: rootpassword: root4可以用MyBatis-X插件快速生成项目骨架。 5使用DS注解在mapper文件中指定数据源。注意数据源名称需要与yml配置中的一致。 // 指定学生表的数据源为testA DS(testA) public interface StudentMapper extends BaseMapperStudent { }// 指定教师表的数据源为testB DS(testB) public interface TeacherMapper extends BaseMapperTeacher { }5创建测试类进行测试 SpringBootTest public class MultipleDataSourceTest {Resourceprivate StudentService studentService;Resourceprivate TeacherService teacherService;Testvoid testSelect() {System.out.println( 学生表数据 );for (Student student : studentService.list()) {System.out.println( student);}System.out.println( 教师表数据 );for (Teacher teacher : teacherService.list()) {System.out.println( teacher);}} }6相关执行日志查看可以通过日志看到已经成功加载两个数据源并且指定默认数据源为[testA]同时我们所查询的数据也能正常出来。 INFO 312 --- [main] com.zaxxer.hikari.HikariDataSource: testA - Starting... INFO 312 --- [main] com.zaxxer.hikari.HikariDataSource: testA - Start completed. INFO 312 --- [main] com.zaxxer.hikari.HikariDataSource: testB - Starting... INFO 312 --- [main] com.zaxxer.hikari.HikariDataSource: testB - Start completed. INFO 312 --- [main] c.b.d.d.DynamicRoutingDataSource: dynamic-datasource - add a datasource named [testB] success INFO 312 --- [main] c.b.d.d.DynamicRoutingDataSource: dynamic-datasource - add a datasource named [testA] success INFO 312 --- [main] c.b.d.d.DynamicRoutingDataSource: dynamic-datasource initial loaded [2] datasource,primary datasource named [testA]学生表数据 Student(id1, username学生1)Student(id2, username学生2)Student(id3, username学生3)Student(id4, username学生4)Student(id5, username学生5)教师表数据 Teacher(id1, username教师1)Teacher(id2, username教师2)Teacher(id3, username教师3)Teacher(id4, username教师4)Teacher(id5, username教师5) INFO 312 --- [ionShutdownHook] c.b.d.d.DynamicRoutingDataSource: dynamic-datasource start closing .... INFO 312 --- [ionShutdownHook] com.zaxxer.hikari.HikariDataSource: testB - Shutdown initiated... INFO 312 --- [ionShutdownHook] com.zaxxer.hikari.HikariDataSource: testB - Shutdown completed. INFO 312 --- [ionShutdownHook] com.zaxxer.hikari.HikariDataSource: testA - Shutdown initiated... INFO 312 --- [ionShutdownHook] com.zaxxer.hikari.HikariDataSource: testA - Shutdown completed. INFO 312 --- [ionShutdownHook] c.b.d.d.DynamicRoutingDataSource: dynamic-datasource all closed success,bye四.补充说明 以上示例可以完成基本的多数据源切换需求对于一些复杂场景由于官方文档付费请根据需要使用。例如 在需要切换数据源的代码最外层加上了事务注解Transactional将会导致数据源切换失效上述代码加上注解运行将报错由于无法切换数据源将使用默认数据源如果默认数据源中没有对应的表将报错在网上检索发现通过添加官方提供的DSTransactional即可实现事务下数据源切换 TestTransactionalvoid testSelect() {System.out.println( 学生表数据 );for (Student student : studentService.list()) {System.out.println( student);}System.out.println( 教师表数据 );for (Teacher teacher : teacherService.list()) {System.out.println( teacher);}}在多线程情况下如果使用编码方式实现数据源切换也将导致问题需要进行一些其他处理。 最后补充说明想表达的由于官网文档是付费的不付费的话许多问题只能搜索寻找解决方法比较麻烦因此请根据自身业务情况选择使用本框架或其他框架。
http://www.hkea.cn/news/14355813/

相关文章:

  • 面试建设单位在哪个网站广安网站建设服务
  • 怎么通过网路访问自己做的网站五年级上册语文优化设计答案
  • 三把火科技网站设计博客下载
  • 商丘市建立网站公司小游戏网页版入口
  • 电子商务网站开发技术和工具有哪些网站建设中 html5
  • 青岛建站公司推荐公司做网站让我们销售
  • 建免费网站顺企网黄页企业
  • 什么网站是最全的学生做网站教程
  • 范例网站怎么做物流网站建设推广
  • 网站建设不完整徐州网站建设电话
  • 衡阳高端网站建设卓辉科技 网站建设
  • 网站栏目分类搜索引擎优化举例说明
  • 厦门网站建设屈兴东邢台搜
  • 商城网站建设缺点赣州广播电视台
  • 网站做后台自己做百度网站
  • flash网站好做seo不高水平的大连网站建设
  • 网站研发公司租服务器去哪里租
  • 网站改版 更换域名无锡seo公司哪家好
  • 网站建设属于设备吗网站建设一般收费
  • 网站设计需要什么技术wordpress 倒计时插件
  • 个体户做网站有用吗wordpress可视化采集
  • 茶山网站仿做网站建设的题目
  • 网站设计制作一条龙免费安康哪里做网站
  • 泰州做网站的公司泊头做网站
  • dw网页制作教程个人网站营销型网站哪家做的好
  • 吴志祥最早做的网站是什么网站评论回复网站怎么做的
  • 制作网站软件教程北京协会网站建设
  • 路由器带u盘接口的做网站电话号码查企业黄页
  • 淮安建设机械网站制作wordpress 评论 顶 踩
  • 营销型网站开发指的是什么大连市建设工程老网站