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

香港公司能在大陆做网站备案嘛品牌推广与传播怎么写

香港公司能在大陆做网站备案嘛,品牌推广与传播怎么写,网站域名怎么设置,网站建设与管理教案一.需求背景 项目需要实现在多个数据源之间读写数据,例如在 A 数据源和 B 数据源读取数据,然后在 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+)。

    • 提供并简化对Druid,HikariCp,BeeCp,Dbcp2的快速集成。

    • 提供对Mybatis-Plus,Quartz,ShardingJdbc,P6sy,Jndi等组件的集成方案。

    • 提供 自定义数据源来源 方案(如全从数据库加载)。

    • 提供项目启动后 动态增加移除数据源 方案。

    • 提供Mybatis环境下的 纯读写分离 方案。

    • 提供使用 spel动态参数 解析数据源方案。内置spel,session,header,支持自定义。

    • 支持 多层数据源嵌套切换 。(ServiceA >>> ServiceB >>> ServiceC)

    • 提供 基于seata的分布式事务方案

    • 提供 本地多数据源事务方案。

  • 约定

    1. 本框架只做 切换数据源 这件核心的事情,并不限制你的具体操作,切换了数据源可以做任何CRUD。
    2. 配置文件所有以下划线 _ 分割的数据源 首部 即为组的名称,相同组名称的数据源会放在一个组下。
    3. 切换数据源可以是组名,也可以是具体数据源名称。组名则切换时采用负载均衡算法切换。、
    4. 默认的数据源名称为 master ,你可以通过 spring.datasource.dynamic.primary 修改。
    5. 代码块里主动切换 > 方法上的注解优 > 类上注解(就近原则)
    6. DS支持继承抽象类上的DS,支持继承接口上的DS。

:官网文档只有基础篇可免费查阅,其他内容查阅需付费29.9¥,因此如果基础篇所讲解功能无法满足需求(业务场景比较复杂)且不愿付费请勿使用本框架!

三.编码实现

业务说明:从A数据源查询出学生数据同时从B数据源查询出教师数据。

技术选型:SpringBoot 2.7.6 + MyBatis-Plus 3.5.4 + MySQL 8.0

1)引入Maven坐标

<dependency><groupId>com.baomidou</groupId><artifactId>dynamic-datasource-spring-boot-starter</artifactId><version>3.5.2</version>
</dependency>

2)创建模拟数据库表,

# 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: root

4)可以用MyBatis-X插件快速生成项目骨架。

在这里插入图片描述

5)使用@DS注解在mapper文件中指定数据源。注意,数据源名称需要与yml配置中的一致。

// 指定学生表的数据源为testA
@DS("testA")
public interface StudentMapper extends BaseMapper<Student> {
}// 指定教师表的数据源为testB
@DS("testB")
public interface TeacherMapper extends BaseMapper<Teacher> {
}

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(id=1, username=学生1)
>>> Student(id=2, username=学生2)
>>> Student(id=3, username=学生3)
>>> Student(id=4, username=学生4)
>>> Student(id=5, username=学生5)
====== 教师表数据 ======
>>> Teacher(id=1, username=教师1)
>>> Teacher(id=2, username=教师2)
>>> Teacher(id=3, username=教师3)
>>> Teacher(id=4, username=教师4)
>>> Teacher(id=5, 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即可实现事务下数据源切换:

        @Test@Transactionalvoid 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.shuangfujiaoyu.com/news/36303.html

相关文章:

  • 网站制作工作室制作平台发布平台有哪些
  • 响水做网站哪家最好百度广告收费表
  • 服饰商城网站建设广州seo优化推广
  • 合肥小程序开发公司超级seo外链工具
  • 局域网创建网站网络运营seo是什么
  • 饮料网站建设市场分析网站友情链接出售
  • wordpress 停用多站点seo文章是什么意思
  • 如何设计一个网站郑州网站建设七彩科技
  • wordpress模仿b站的主题危机公关
  • 网站wordpress是什么谷歌google 官网下载
  • 广州市住房和城乡建设局如何做seo搜索引擎优化
  • 房地产信息查询平台平台seo什么意思
  • 证券公司网站建设方案百度一下 你就知道首页官网
  • 重庆定制网站建设公司网站seo推广方案
  • 什么样的公司愿意做网站国内最新新闻热点事件
  • 手机网站可以做动态吗网络营销分类
  • 专门做奶粉的网站百度推广登录后台
  • 网站建设有什么系统销售课程培训视频教程
  • 旅游网站怎么做杭州网站推广找哪家
  • 网站怎么建设宁波微信推广平台哪个好
  • 备案期间的网站打开广告软文代理平台
  • 长安公司网站建设百度影音在线电影
  • 个人如何做公益网站抖音企业推广
  • 简单广告设计软件关键词优化平台有哪些
  • 乌鲁木齐网站建设网络营销模式有哪几种
  • 做网站有什么用福州今日头条新闻
  • 创建一个个人网站需要多少钱热搜榜排名今日
  • 宜宾百度网站建设宁波网站建设与维护
  • 做网站时 404网页如何指向北京网站seo招聘
  • 外网网站有什么好的推荐seo搜索优化待遇