From 0e7c53fb766087f21c45685076560edd0ef7f330 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?=E4=B9=9D=E5=88=86=E7=9F=B3=E4=BA=BA?= <1915803787@qq.com>
Date: Thu, 11 Mar 2021 14:54:11 +0800
Subject: [PATCH 1/8] =?UTF-8?q?feat(static):=20=E9=9D=99=E6=80=81=E5=A4=9A?=
=?UTF-8?q?=E6=95=B0=E6=8D=AE=E6=BA=90?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
静态多数据源搞定,db1,db2
---
.../dal/bean/databasetwo/OrderInfo.java | 36 +++++++++++++++++++
.../mapper/databasetwo/OrderInfoMapper.java | 16 +++++++++
.../service/OrderInfoService.java | 16 +++++++++
.../service/impl/OrderInfoServiceImpl.java | 20 +++++++++++
.../mapper/databasetwo/OrderInfoMapper.xml | 5 +++
5 files changed, 93 insertions(+)
create mode 100644 staticmybatisdubbomysql/src/main/java/com/lin/mybatisdubbomysql/dal/bean/databasetwo/OrderInfo.java
create mode 100644 staticmybatisdubbomysql/src/main/java/com/lin/mybatisdubbomysql/dal/mapper/databasetwo/OrderInfoMapper.java
create mode 100644 staticmybatisdubbomysql/src/main/java/com/lin/mybatisdubbomysql/service/OrderInfoService.java
create mode 100644 staticmybatisdubbomysql/src/main/java/com/lin/mybatisdubbomysql/service/impl/OrderInfoServiceImpl.java
create mode 100644 staticmybatisdubbomysql/src/main/resources/mapper/databasetwo/OrderInfoMapper.xml
diff --git a/staticmybatisdubbomysql/src/main/java/com/lin/mybatisdubbomysql/dal/bean/databasetwo/OrderInfo.java b/staticmybatisdubbomysql/src/main/java/com/lin/mybatisdubbomysql/dal/bean/databasetwo/OrderInfo.java
new file mode 100644
index 0000000..79eef03
--- /dev/null
+++ b/staticmybatisdubbomysql/src/main/java/com/lin/mybatisdubbomysql/dal/bean/databasetwo/OrderInfo.java
@@ -0,0 +1,36 @@
+package com.lin.mybatisdubbomysql.dal.bean.databasetwo;
+
+import com.baomidou.mybatisplus.annotation.TableName;
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableId;
+import java.time.LocalDateTime;
+import java.io.Serializable;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+
+/**
+ *
+ *
+ *
+ *
+ * @author 九分石人
+ * @since 2021-03-11
+ */
+@Data
+@EqualsAndHashCode(callSuper = false)
+@TableName("order_info")
+public class OrderInfo implements Serializable {
+
+ private static final long serialVersionUID=1L;
+
+ @TableId(value = "id", type = IdType.AUTO)
+ private Integer id;
+
+ private String orderId;
+
+ private Integer userId;
+
+ private LocalDateTime createTime;
+
+
+}
diff --git a/staticmybatisdubbomysql/src/main/java/com/lin/mybatisdubbomysql/dal/mapper/databasetwo/OrderInfoMapper.java b/staticmybatisdubbomysql/src/main/java/com/lin/mybatisdubbomysql/dal/mapper/databasetwo/OrderInfoMapper.java
new file mode 100644
index 0000000..a90d4e4
--- /dev/null
+++ b/staticmybatisdubbomysql/src/main/java/com/lin/mybatisdubbomysql/dal/mapper/databasetwo/OrderInfoMapper.java
@@ -0,0 +1,16 @@
+package com.lin.mybatisdubbomysql.dal.mapper.databasetwo;
+
+import com.lin.mybatisdubbomysql.dal.bean.databasetwo.OrderInfo;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+
+/**
+ *
+ * Mapper 接口
+ *
+ *
+ * @author 九分石人
+ * @since 2021-03-11
+ */
+public interface OrderInfoMapper extends BaseMapper {
+
+}
diff --git a/staticmybatisdubbomysql/src/main/java/com/lin/mybatisdubbomysql/service/OrderInfoService.java b/staticmybatisdubbomysql/src/main/java/com/lin/mybatisdubbomysql/service/OrderInfoService.java
new file mode 100644
index 0000000..df071c1
--- /dev/null
+++ b/staticmybatisdubbomysql/src/main/java/com/lin/mybatisdubbomysql/service/OrderInfoService.java
@@ -0,0 +1,16 @@
+package com.lin.mybatisdubbomysql.service;
+
+import com.lin.mybatisdubbomysql.dal.bean.databasetwo.OrderInfo;
+import com.baomidou.mybatisplus.extension.service.IService;
+
+/**
+ *
+ * 服务类
+ *
+ *
+ * @author 九分石人
+ * @since 2021-03-11
+ */
+public interface OrderInfoService extends IService {
+
+}
diff --git a/staticmybatisdubbomysql/src/main/java/com/lin/mybatisdubbomysql/service/impl/OrderInfoServiceImpl.java b/staticmybatisdubbomysql/src/main/java/com/lin/mybatisdubbomysql/service/impl/OrderInfoServiceImpl.java
new file mode 100644
index 0000000..a4f0fd3
--- /dev/null
+++ b/staticmybatisdubbomysql/src/main/java/com/lin/mybatisdubbomysql/service/impl/OrderInfoServiceImpl.java
@@ -0,0 +1,20 @@
+package com.lin.mybatisdubbomysql.service.impl;
+
+import com.lin.mybatisdubbomysql.dal.bean.databasetwo.OrderInfo;
+import com.lin.mybatisdubbomysql.dal.mapper.databasetwo.OrderInfoMapper;
+import com.lin.mybatisdubbomysql.service.OrderInfoService;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import org.springframework.stereotype.Service;
+
+/**
+ *
+ * 服务实现类
+ *
+ *
+ * @author 九分石人
+ * @since 2021-03-11
+ */
+@Service
+public class OrderInfoServiceImpl extends ServiceImpl implements OrderInfoService {
+
+}
diff --git a/staticmybatisdubbomysql/src/main/resources/mapper/databasetwo/OrderInfoMapper.xml b/staticmybatisdubbomysql/src/main/resources/mapper/databasetwo/OrderInfoMapper.xml
new file mode 100644
index 0000000..62023eb
--- /dev/null
+++ b/staticmybatisdubbomysql/src/main/resources/mapper/databasetwo/OrderInfoMapper.xml
@@ -0,0 +1,5 @@
+
+
+
+
+
--
Gitee
From 730717b9b3c422f24823317947d8dfd066cff61f Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?=E4=B9=9D=E5=88=86=E7=9F=B3=E4=BA=BA?= <1915803787@qq.com>
Date: Thu, 11 Mar 2021 17:06:06 +0800
Subject: [PATCH 2/8] =?UTF-8?q?feat(static):=20=E5=8A=A8=E6=80=81=E5=A4=9A?=
=?UTF-8?q?=E6=95=B0=E6=8D=AE=E6=BA=90?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
动态多数据源搞定,db1,db2,使用AOP切面,在执行前切换数据源
---
dynamicmybatisdubbomysql/pom.xml | 87 ++++++++++++++++
.../lin/mybatisdubbomysql/DateBaseEnum.java | 23 +++++
.../DynamicMybatisDubboMysqlApplication.java | 23 +++++
.../aop/DatasourceAspect.java | 37 +++++++
.../mybatisdubbomysql/config/DBConfig.java | 47 +++++++++
.../dal/bean/databaseone/User.java | 36 +++++++
.../dal/bean/databasetwo/OrderInfo.java | 36 +++++++
.../dal/mapper/databaseone/UserMapper.java | 16 +++
.../mapper/databasetwo/OrderInfoMapper.java | 16 +++
.../extend/DynamicDataSource.java | 37 +++++++
.../service/OrderInfoService.java | 16 +++
.../service/UserService.java | 16 +++
.../service/impl/OrderInfoServiceImpl.java | 20 ++++
.../service/impl/UserServiceImpl.java | 20 ++++
.../src/main/resources/application.yml | 13 +++
.../mapper/databaseone/UserMapper.xml | 5 +
.../mapper/databasetwo/OrderInfoMapper.xml | 5 +
...amicMybatisDubboMysqlApplicationTests.java | 7 ++
.../mybatisplus/DatabaseOneCodeGenerator.java | 98 +++++++++++++++++++
.../mybatisplus/DatabaseTwoCodeGenerator.java | 98 +++++++++++++++++++
.../mybatisplus/LQKCodeGenerator.java | 23 +++++
.../service/OrderInfoTest.java | 21 ++++
.../mybatisdubbomysql/service/UserTest.java | 23 +++++
pom.xml | 11 ++-
staticmybatisdubbomysql/pom.xml | 2 +-
...> StaticMybatisDubboMysqlApplication.java} | 7 +-
.../src/main/resources/application.yml | 2 +-
...ticMybatisDubboMysqlApplicationTests.java} | 2 +-
.../mybatisplus/DatabaseOneCodeGenerator.java | 2 +-
.../mybatisplus/DatabaseTwoCodeGenerator.java | 2 +-
.../service/OrderInfoTest.java | 4 +-
.../mybatisdubbomysql/service/UserTest.java | 4 +-
32 files changed, 745 insertions(+), 14 deletions(-)
create mode 100644 dynamicmybatisdubbomysql/pom.xml
create mode 100644 dynamicmybatisdubbomysql/src/main/java/com/lin/mybatisdubbomysql/DateBaseEnum.java
create mode 100644 dynamicmybatisdubbomysql/src/main/java/com/lin/mybatisdubbomysql/DynamicMybatisDubboMysqlApplication.java
create mode 100644 dynamicmybatisdubbomysql/src/main/java/com/lin/mybatisdubbomysql/aop/DatasourceAspect.java
create mode 100644 dynamicmybatisdubbomysql/src/main/java/com/lin/mybatisdubbomysql/config/DBConfig.java
create mode 100644 dynamicmybatisdubbomysql/src/main/java/com/lin/mybatisdubbomysql/dal/bean/databaseone/User.java
create mode 100644 dynamicmybatisdubbomysql/src/main/java/com/lin/mybatisdubbomysql/dal/bean/databasetwo/OrderInfo.java
create mode 100644 dynamicmybatisdubbomysql/src/main/java/com/lin/mybatisdubbomysql/dal/mapper/databaseone/UserMapper.java
create mode 100644 dynamicmybatisdubbomysql/src/main/java/com/lin/mybatisdubbomysql/dal/mapper/databasetwo/OrderInfoMapper.java
create mode 100644 dynamicmybatisdubbomysql/src/main/java/com/lin/mybatisdubbomysql/extend/DynamicDataSource.java
create mode 100644 dynamicmybatisdubbomysql/src/main/java/com/lin/mybatisdubbomysql/service/OrderInfoService.java
create mode 100644 dynamicmybatisdubbomysql/src/main/java/com/lin/mybatisdubbomysql/service/UserService.java
create mode 100644 dynamicmybatisdubbomysql/src/main/java/com/lin/mybatisdubbomysql/service/impl/OrderInfoServiceImpl.java
create mode 100644 dynamicmybatisdubbomysql/src/main/java/com/lin/mybatisdubbomysql/service/impl/UserServiceImpl.java
create mode 100644 dynamicmybatisdubbomysql/src/main/resources/application.yml
create mode 100644 dynamicmybatisdubbomysql/src/main/resources/mapper/databaseone/UserMapper.xml
create mode 100644 dynamicmybatisdubbomysql/src/main/resources/mapper/databasetwo/OrderInfoMapper.xml
create mode 100644 dynamicmybatisdubbomysql/src/test/java/com/lin/mybatisdubbomysql/DynamicMybatisDubboMysqlApplicationTests.java
create mode 100644 dynamicmybatisdubbomysql/src/test/java/com/lin/mybatisdubbomysql/mybatisplus/DatabaseOneCodeGenerator.java
create mode 100644 dynamicmybatisdubbomysql/src/test/java/com/lin/mybatisdubbomysql/mybatisplus/DatabaseTwoCodeGenerator.java
create mode 100644 dynamicmybatisdubbomysql/src/test/java/com/lin/mybatisdubbomysql/mybatisplus/LQKCodeGenerator.java
create mode 100644 dynamicmybatisdubbomysql/src/test/java/com/lin/mybatisdubbomysql/service/OrderInfoTest.java
create mode 100644 dynamicmybatisdubbomysql/src/test/java/com/lin/mybatisdubbomysql/service/UserTest.java
rename staticmybatisdubbomysql/src/main/java/com/lin/mybatisdubbomysql/{StaticmybatisdubbomysqlApplication.java => StaticMybatisDubboMysqlApplication.java} (73%)
rename staticmybatisdubbomysql/src/test/java/com/lin/mybatisdubbomysql/{StaticmybatisdubbomysqlApplicationTests.java => StaticMybatisDubboMysqlApplicationTests.java} (68%)
diff --git a/dynamicmybatisdubbomysql/pom.xml b/dynamicmybatisdubbomysql/pom.xml
new file mode 100644
index 0000000..a424f33
--- /dev/null
+++ b/dynamicmybatisdubbomysql/pom.xml
@@ -0,0 +1,87 @@
+
+
+
+ mybatisdubbomysql
+ com.lin
+ 0.0.1-SNAPSHOT
+
+ 4.0.0
+
+ dynamicmybatisdubbomysql
+
+
+
+ org.springframework.boot
+ spring-boot-starter-aop
+
+
+ org.mybatis.spring.boot
+ mybatis-spring-boot-starter
+
+
+ mysql
+ mysql-connector-java
+
+
+ com.baomidou
+ mybatis-plus-boot-starter
+
+
+ com.alibaba
+ druid-spring-boot-starter
+
+
+ com.baomidou
+ mybatis-plus-generator
+ test
+
+
+ org.apache.velocity
+ velocity-engine-core
+
+
+
+ org.springframework.boot
+ spring-boot-configuration-processor
+ true
+
+
+
+ org.projectlombok
+ lombok
+ true
+
+
+
+ org.springframework.boot
+ spring-boot-starter-test
+
+
+ org.junit.vintage
+ junit-vintage-engine
+
+
+ test
+
+
+
+
+
+
+ org.springframework.boot
+ spring-boot-maven-plugin
+
+
+
+ org.projectlombok
+ lombok
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/dynamicmybatisdubbomysql/src/main/java/com/lin/mybatisdubbomysql/DateBaseEnum.java b/dynamicmybatisdubbomysql/src/main/java/com/lin/mybatisdubbomysql/DateBaseEnum.java
new file mode 100644
index 0000000..c822a10
--- /dev/null
+++ b/dynamicmybatisdubbomysql/src/main/java/com/lin/mybatisdubbomysql/DateBaseEnum.java
@@ -0,0 +1,23 @@
+package com.lin.mybatisdubbomysql;
+
+import lombok.AllArgsConstructor;
+import lombok.Data;
+import lombok.Getter;
+
+@AllArgsConstructor
+@Getter
+public enum DateBaseEnum {
+
+
+ /**
+ * 数据库one
+ */
+ DataBaseOne("one", "one"),
+ /**
+ * 数据库two
+ */
+ DataBaseTwo("two", "two");
+
+ private final String name;
+ private final String value;
+}
diff --git a/dynamicmybatisdubbomysql/src/main/java/com/lin/mybatisdubbomysql/DynamicMybatisDubboMysqlApplication.java b/dynamicmybatisdubbomysql/src/main/java/com/lin/mybatisdubbomysql/DynamicMybatisDubboMysqlApplication.java
new file mode 100644
index 0000000..e2eed0e
--- /dev/null
+++ b/dynamicmybatisdubbomysql/src/main/java/com/lin/mybatisdubbomysql/DynamicMybatisDubboMysqlApplication.java
@@ -0,0 +1,23 @@
+package com.lin.mybatisdubbomysql;
+
+import com.alibaba.druid.spring.boot.autoconfigure.DruidDataSourceAutoConfigure;
+import com.lin.mybatisdubbomysql.config.DBConfig;
+import org.mybatis.spring.annotation.MapperScan;
+import org.springframework.boot.SpringApplication;
+import org.springframework.boot.autoconfigure.SpringBootApplication;
+import org.springframework.boot.autoconfigure.jdbc.DataSourceAutoConfiguration;
+import org.springframework.context.annotation.ComponentScan;
+import org.springframework.context.annotation.Import;
+
+/**
+ * @author 九分石人
+ */
+@ComponentScan(basePackages = "com.lin.mybatisdubbomysql.*")
+@SpringBootApplication(exclude = {DataSourceAutoConfiguration.class, DruidDataSourceAutoConfigure.class})
+public class DynamicMybatisDubboMysqlApplication {
+
+ public static void main(String[] args) {
+ SpringApplication.run(DynamicMybatisDubboMysqlApplication.class, args);
+ }
+
+}
diff --git a/dynamicmybatisdubbomysql/src/main/java/com/lin/mybatisdubbomysql/aop/DatasourceAspect.java b/dynamicmybatisdubbomysql/src/main/java/com/lin/mybatisdubbomysql/aop/DatasourceAspect.java
new file mode 100644
index 0000000..f64132c
--- /dev/null
+++ b/dynamicmybatisdubbomysql/src/main/java/com/lin/mybatisdubbomysql/aop/DatasourceAspect.java
@@ -0,0 +1,37 @@
+package com.lin.mybatisdubbomysql.aop;
+
+import com.lin.mybatisdubbomysql.DateBaseEnum;
+import com.lin.mybatisdubbomysql.extend.DynamicDataSource;
+import org.aspectj.lang.ProceedingJoinPoint;
+import org.aspectj.lang.annotation.Around;
+import org.aspectj.lang.annotation.Aspect;
+import org.aspectj.lang.annotation.Pointcut;
+import org.aspectj.lang.reflect.MethodSignature;
+import org.springframework.stereotype.Component;
+
+import javax.sql.DataSource;
+import java.lang.reflect.Method;
+
+/**
+ * @author 九分石人
+ */
+@Component
+@Aspect
+public class DatasourceAspect {
+
+
+ @Pointcut("execution(public * com.lin.mybatisdubbomysql.dal.mapper.databasetwo..*.*(..))")
+ public void dataSourcePointCut() {
+
+ }
+
+ @Around("dataSourcePointCut()")
+ public Object around(ProceedingJoinPoint point) throws Throwable {
+ DynamicDataSource.setDataSource(DateBaseEnum.DataBaseTwo.getValue());
+ try {
+ return point.proceed();
+ } finally {
+ DynamicDataSource.clearDataSource();
+ }
+ }
+}
diff --git a/dynamicmybatisdubbomysql/src/main/java/com/lin/mybatisdubbomysql/config/DBConfig.java b/dynamicmybatisdubbomysql/src/main/java/com/lin/mybatisdubbomysql/config/DBConfig.java
new file mode 100644
index 0000000..10d4573
--- /dev/null
+++ b/dynamicmybatisdubbomysql/src/main/java/com/lin/mybatisdubbomysql/config/DBConfig.java
@@ -0,0 +1,47 @@
+package com.lin.mybatisdubbomysql.config;
+
+import com.baomidou.mybatisplus.extension.spring.MybatisSqlSessionFactoryBean;
+import com.lin.mybatisdubbomysql.DateBaseEnum;
+import com.lin.mybatisdubbomysql.extend.DynamicDataSource;
+import org.apache.ibatis.session.SqlSessionFactory;
+import org.mybatis.spring.annotation.MapperScan;
+import org.springframework.boot.context.properties.ConfigurationProperties;
+import org.springframework.boot.context.properties.EnableConfigurationProperties;
+import org.springframework.boot.jdbc.DataSourceBuilder;
+import org.springframework.context.annotation.Bean;
+import org.springframework.context.annotation.Configuration;
+import org.springframework.context.annotation.Primary;
+
+import javax.sql.DataSource;
+import java.util.HashMap;
+import java.util.Map;
+
+/**
+ * @author 九分石人
+ */
+@Configuration
+@MapperScan(basePackages = "com.lin.mybatisdubbomysql.dal.mapper")
+public class DBConfig {
+
+ @Bean
+ @ConfigurationProperties(prefix = "spring.datasourceone")
+ public DataSource dataSourceOne() {
+ return DataSourceBuilder.create().build();
+ }
+
+ @Bean
+ @ConfigurationProperties(prefix = "spring.datasourcetwo")
+ public DataSource dataSourceTwo() {
+ return DataSourceBuilder.create().build();
+ }
+
+ @Bean
+ @Primary
+ public DynamicDataSource dataSource(DataSource dataSourceOne,DataSource dataSourceTwo){
+ Map