jsp servlet做博客网站,wordpress忘记邮箱,静态网站系统,宁波网站制作首推蓉胜网络好1. 项目背景
最近写文章发布到【笑小枫】小程序和我的个人网站上#xff0c;因为个人网站用的是halo框架搭建#xff0c;两边数据结构不一致#xff0c;导致我每次维护文章都需要两边维护#xff0c;这就很烦~
于是#xff0c;本文就诞生了。通过项目连接这两个数据库因为个人网站用的是halo框架搭建两边数据结构不一致导致我每次维护文章都需要两边维护这就很烦~
于是本文就诞生了。通过项目连接这两个数据库我在维护文章的时候同时同步下个人网站的博客。
PS果然程序员就是懒 深度PS在七夕发布这一篇文章感觉不对劲呀还是要专一不能多…【手动狗头不是单身的那种】 2. 项目准备
项目使用的是Mybatis plus。这里简单点直接使用Mybatis plus的多数据源简单方便。
这里已经脱离了原有代码。单独抽出了一个小Demo小枫我还是很贴心的。不让你们看我那乱七八糟的逻辑了~ 这里只是为了演示实际按你们项目来就行了 2.1 准备数据库
首先创建两个数据库吧这里演示就叫test和test2了。
然后简单点每个表创建一张表好了。
test创建user表
CREATE TABLE user (id BIGINT(20) NOT NULL AUTO_INCREMENT COMMENT ID,login_name VARCHAR(64) NOT NULL COMMENT 登录名,password VARCHAR(128) NOT NULL COMMENT 密码,create_time DATETIME NOT NULL COMMENT 创建时间,update_time DATETIME NOT NULL COMMENT 更新时间,PRIMARY KEY (id) USING BTREE
)COMMENT用户表 COLLATEutf8_general_ci ENGINEInnoDB;test2创建product表
CREATE TABLE product (id BIGINT(20) NOT NULL AUTO_INCREMENT COMMENT ID,name VARCHAR(64) NOT NULL COMMENT 名称,remark VARCHAR(128) NOT NULL COMMENT 备注,create_time DATETIME NOT NULL COMMENT 创建时间,update_time DATETIME NOT NULL COMMENT 更新时间,PRIMARY KEY (id) USING BTREE
)COMMENT商品表 COLLATEutf8_general_ci ENGINEInnoDB;创建完之后就是这样 3. 功能实现
简单点吧接下来坐飞机直接飞核心内容算了还是火箭吧。
3.1 引入依赖
这里的版本和mybatis-plus版本一致就可以了这里用mybatis-plus-version3.5.2/mybatis-plus-version !-- 多数据源 --dependencygroupIdcom.baomidou/groupIdartifactIddynamic-datasource-spring-boot-starter/artifactIdversion${mybatis-plus-version}/version/dependency3.2 生成基础对象
然后使用Mybatis plus代码生成工具生成基础对象具体代码就不贴了需要的可以看Github源码源码地址放在文章最后。
这里controller用了一个其它的分包了实际根据项目需求来就行影响不大自己看着舒服就行。
在Application.java上添加MapperScan的注解。
package com.maple.dynamic;import org.mybatis.spring.annotation.MapperScan;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;SpringBootApplication
MapperScan({com.maple.dynamic.test.mapper, com.maple.dynamic.test2.mapper})
public class MapleDynamicDatasourceApplication {public static void main(String[] args) {SpringApplication.run(MapleDynamicDatasourceApplication.class, args);}
}整个项目的结构如下 3.3 配置数据库链接
配置application.yml文件这里使用yml格式哈。
server:port: 8080spring:datasource:dynamic:primary: master #设置默认的数据源或者数据源组,默认值即为masterstrict: false #严格匹配数据源,默认false. true未匹配到指定数据源时抛异常,false使用默认数据源datasource:master:url: jdbc:mysql://127.0.0.1:3306/test?useUnicodeyescharacterEncodingUTF-8useSSLfalseserverTimezoneGMT%2B8username: rootpassword: Zhang123driver-class-name: com.mysql.cj.jdbc.Drivertest2:url: jdbc:mysql://127.0.0.1:3306/test2?useUnicodeyescharacterEncodingUTF-8useSSLfalseserverTimezoneGMT%2B8username: rootpassword: Zhang123driver-class-name: com.mysql.cj.jdbc.Driver默认数据库是mastertest2配置了一个test2的数据源这里的master和test2可以根据自己需求命名。
3.4 使用演示
默认的是master数据源这里就不做配置了。
如果想使用test2数据源需要在service上添加DS(“test2”)注解切换数据源。
DS 可以注解在方法上或类上同时存在就近原则 方法上注解 优先于 类上注解。
注解结果没有DS默认数据源DS(“dsName”)dsName可以为组名也可以为具体某个库的名称
我们给ProductServiceImpl.java添加上DS(test2)注解。 创建TestController.java添加测试方法如下图所示 4. 功能测试
好了项目的整体配置都OK了我们一起来看一下效果吧。
启动项目 可以看到[test2]、[master]添加成功。其中[master]为主数据源。
我们调用下GET http://localhost:8080/test试下可以看到成功取到了数据。 好了本文就到这里了。也懒得总结了总结内容看标题吧
5. 项目源码
https://github.com/hack-feng/maple-product/
其中maple-dynamic-datasource模块即为本文的Demo源码。需要的朋友可以看下。
感兴趣的朋友可以帮忙点个star⭐⭐⭐⭐⭐后续会有更多Java相关的集成Demo让我来做你的百宝袋吧。