From 47964228a864e4afd48bd625bce0edea04b0cd0e Mon Sep 17 00:00:00 2001 From: YunaiV <> Date: Wed, 6 Nov 2019 19:44:17 +0800 Subject: [PATCH] =?UTF-8?q?=E5=A2=9E=E5=8A=A0=E5=A4=9A=E6=95=B0=E6=8D=AE?= =?UTF-8?q?=E6=BA=90=E7=A4=BA=E4=BE=8B?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../pom.xml | 56 ++++++++++ .../lab17/dynamicdatasource/Application.java | 11 ++ .../constant/DBConstants.java | 18 +++ .../dynamicdatasource/dataobject/OrderDO.java | 43 ++++++++ .../dynamicdatasource/dataobject/UserDO.java | 43 ++++++++ .../dynamicdatasource/mapper/OrderMapper.java | 15 +++ .../dynamicdatasource/mapper/UserMapper.java | 15 +++ .../service/OrderService.java | 103 ++++++++++++++++++ .../src/main/resources/application.yaml | 24 ++++ .../src/main/resources/mapper/OrderMapper.xml | 16 +++ .../src/main/resources/mapper/UserMapper.xml | 16 +++ .../src/main/resources/mybatis-config.xml | 19 ++++ .../src/main/resources/sql/db.sql | 13 +++ .../mapper/OrderMapperTest.java | 24 ++++ .../mapper/UserMapperTest.java | 24 ++++ .../service/OrderServiceTest.java | 42 +++++++ .../pom.xml | 15 +++ .../lab-17-dynamic-datasource-mybatis/pom.xml | 49 +++++++++ .../lab17/dynamicdatasource/Application.java | 9 ++ .../config/MyBatisOrdersConfig.java | 64 +++++++++++ .../config/MyBatisUsersConfig.java | 64 +++++++++++ .../constant/DBConstants.java | 18 +++ .../dynamicdatasource/dataobject/OrderDO.java | 43 ++++++++ .../dynamicdatasource/dataobject/UserDO.java | 43 ++++++++ .../mapper/orders/OrderMapper.java | 12 ++ .../mapper/users/UserMapper.java | 12 ++ .../service/OrderService.java | 80 ++++++++++++++ .../src/main/resources/application.yaml | 20 ++++ .../resources/mapper/orders/OrderMapper.xml | 16 +++ .../resources/mapper/users/UserMapper.xml | 16 +++ .../src/main/resources/mybatis-config.xml | 19 ++++ .../src/main/resources/sql/db.sql | 13 +++ .../mapper/orders/OrderMapperTest.java | 24 ++++ .../mapper/users/UserMapperTest.java | 24 ++++ .../lab17/dynamicdatasource/package-info.java | 1 + .../service/OrderServiceTest.java | 37 +++++++ lab-17/pom.xml | 21 ++++ pom.xml | 1 + 38 files changed, 1083 insertions(+) create mode 100644 lab-17/lab-17-dynamic-datasource-baomidou-01/pom.xml create mode 100644 lab-17/lab-17-dynamic-datasource-baomidou-01/src/main/java/cn/iocoder/springboot/lab17/dynamicdatasource/Application.java create mode 100644 lab-17/lab-17-dynamic-datasource-baomidou-01/src/main/java/cn/iocoder/springboot/lab17/dynamicdatasource/constant/DBConstants.java create mode 100644 lab-17/lab-17-dynamic-datasource-baomidou-01/src/main/java/cn/iocoder/springboot/lab17/dynamicdatasource/dataobject/OrderDO.java create mode 100644 lab-17/lab-17-dynamic-datasource-baomidou-01/src/main/java/cn/iocoder/springboot/lab17/dynamicdatasource/dataobject/UserDO.java create mode 100644 lab-17/lab-17-dynamic-datasource-baomidou-01/src/main/java/cn/iocoder/springboot/lab17/dynamicdatasource/mapper/OrderMapper.java create mode 100644 lab-17/lab-17-dynamic-datasource-baomidou-01/src/main/java/cn/iocoder/springboot/lab17/dynamicdatasource/mapper/UserMapper.java create mode 100644 lab-17/lab-17-dynamic-datasource-baomidou-01/src/main/java/cn/iocoder/springboot/lab17/dynamicdatasource/service/OrderService.java create mode 100644 lab-17/lab-17-dynamic-datasource-baomidou-01/src/main/resources/application.yaml create mode 100644 lab-17/lab-17-dynamic-datasource-baomidou-01/src/main/resources/mapper/OrderMapper.xml create mode 100644 lab-17/lab-17-dynamic-datasource-baomidou-01/src/main/resources/mapper/UserMapper.xml create mode 100644 lab-17/lab-17-dynamic-datasource-baomidou-01/src/main/resources/mybatis-config.xml create mode 100644 lab-17/lab-17-dynamic-datasource-baomidou-01/src/main/resources/sql/db.sql create mode 100644 lab-17/lab-17-dynamic-datasource-baomidou-01/src/test/java/cn/iocoder/springboot/lab17/dynamicdatasource/mapper/OrderMapperTest.java create mode 100644 lab-17/lab-17-dynamic-datasource-baomidou-01/src/test/java/cn/iocoder/springboot/lab17/dynamicdatasource/mapper/UserMapperTest.java create mode 100644 lab-17/lab-17-dynamic-datasource-baomidou-01/src/test/java/cn/iocoder/springboot/lab17/dynamicdatasource/service/OrderServiceTest.java create mode 100644 lab-17/lab-17-dynamic-datasource-baomidou-02/pom.xml create mode 100644 lab-17/lab-17-dynamic-datasource-mybatis/pom.xml create mode 100644 lab-17/lab-17-dynamic-datasource-mybatis/src/main/java/cn/iocoder/springboot/lab17/dynamicdatasource/Application.java create mode 100644 lab-17/lab-17-dynamic-datasource-mybatis/src/main/java/cn/iocoder/springboot/lab17/dynamicdatasource/config/MyBatisOrdersConfig.java create mode 100644 lab-17/lab-17-dynamic-datasource-mybatis/src/main/java/cn/iocoder/springboot/lab17/dynamicdatasource/config/MyBatisUsersConfig.java create mode 100644 lab-17/lab-17-dynamic-datasource-mybatis/src/main/java/cn/iocoder/springboot/lab17/dynamicdatasource/constant/DBConstants.java create mode 100644 lab-17/lab-17-dynamic-datasource-mybatis/src/main/java/cn/iocoder/springboot/lab17/dynamicdatasource/dataobject/OrderDO.java create mode 100644 lab-17/lab-17-dynamic-datasource-mybatis/src/main/java/cn/iocoder/springboot/lab17/dynamicdatasource/dataobject/UserDO.java create mode 100644 lab-17/lab-17-dynamic-datasource-mybatis/src/main/java/cn/iocoder/springboot/lab17/dynamicdatasource/mapper/orders/OrderMapper.java create mode 100644 lab-17/lab-17-dynamic-datasource-mybatis/src/main/java/cn/iocoder/springboot/lab17/dynamicdatasource/mapper/users/UserMapper.java create mode 100644 lab-17/lab-17-dynamic-datasource-mybatis/src/main/java/cn/iocoder/springboot/lab17/dynamicdatasource/service/OrderService.java create mode 100644 lab-17/lab-17-dynamic-datasource-mybatis/src/main/resources/application.yaml create mode 100644 lab-17/lab-17-dynamic-datasource-mybatis/src/main/resources/mapper/orders/OrderMapper.xml create mode 100644 lab-17/lab-17-dynamic-datasource-mybatis/src/main/resources/mapper/users/UserMapper.xml create mode 100644 lab-17/lab-17-dynamic-datasource-mybatis/src/main/resources/mybatis-config.xml create mode 100644 lab-17/lab-17-dynamic-datasource-mybatis/src/main/resources/sql/db.sql create mode 100644 lab-17/lab-17-dynamic-datasource-mybatis/src/test/java/cn/iocoder/springboot/lab17/dynamicdatasource/mapper/orders/OrderMapperTest.java create mode 100644 lab-17/lab-17-dynamic-datasource-mybatis/src/test/java/cn/iocoder/springboot/lab17/dynamicdatasource/mapper/users/UserMapperTest.java create mode 100644 lab-17/lab-17-dynamic-datasource-mybatis/src/test/java/cn/iocoder/springboot/lab17/dynamicdatasource/package-info.java create mode 100644 lab-17/lab-17-dynamic-datasource-mybatis/src/test/java/cn/iocoder/springboot/lab17/dynamicdatasource/service/OrderServiceTest.java create mode 100644 lab-17/pom.xml diff --git a/lab-17/lab-17-dynamic-datasource-baomidou-01/pom.xml b/lab-17/lab-17-dynamic-datasource-baomidou-01/pom.xml new file mode 100644 index 00000000..ffe4bde7 --- /dev/null +++ b/lab-17/lab-17-dynamic-datasource-baomidou-01/pom.xml @@ -0,0 +1,56 @@ + + + + org.springframework.boot + spring-boot-starter-parent + 2.1.3.RELEASE + + + 4.0.0 + + lab-17-dynamic-datasource-baomidou-01 + + + + + org.springframework.boot + spring-boot-starter-jdbc + + + mysql + mysql-connector-java + 5.1.48 + + + + + org.mybatis.spring.boot + mybatis-spring-boot-starter + 2.1.1 + + + + + com.baomidou + dynamic-datasource-spring-boot-starter + 2.5.7 + + + + + org.springframework.boot + spring-boot-actuator + + + + + org.springframework.boot + spring-boot-starter-test + test + + + + + diff --git a/lab-17/lab-17-dynamic-datasource-baomidou-01/src/main/java/cn/iocoder/springboot/lab17/dynamicdatasource/Application.java b/lab-17/lab-17-dynamic-datasource-baomidou-01/src/main/java/cn/iocoder/springboot/lab17/dynamicdatasource/Application.java new file mode 100644 index 00000000..639d1514 --- /dev/null +++ b/lab-17/lab-17-dynamic-datasource-baomidou-01/src/main/java/cn/iocoder/springboot/lab17/dynamicdatasource/Application.java @@ -0,0 +1,11 @@ +package cn.iocoder.springboot.lab17.dynamicdatasource; + +import org.mybatis.spring.annotation.MapperScan; +import org.springframework.boot.autoconfigure.SpringBootApplication; +import org.springframework.context.annotation.EnableAspectJAutoProxy; + +@SpringBootApplication +@MapperScan(basePackages = "cn.iocoder.springboot.lab17.dynamicdatasource.mapper") +@EnableAspectJAutoProxy(exposeProxy = true) // http://www.voidcn.com/article/p-zddcuyii-bpt.html +public class Application { +} diff --git a/lab-17/lab-17-dynamic-datasource-baomidou-01/src/main/java/cn/iocoder/springboot/lab17/dynamicdatasource/constant/DBConstants.java b/lab-17/lab-17-dynamic-datasource-baomidou-01/src/main/java/cn/iocoder/springboot/lab17/dynamicdatasource/constant/DBConstants.java new file mode 100644 index 00000000..bb36b150 --- /dev/null +++ b/lab-17/lab-17-dynamic-datasource-baomidou-01/src/main/java/cn/iocoder/springboot/lab17/dynamicdatasource/constant/DBConstants.java @@ -0,0 +1,18 @@ +package cn.iocoder.springboot.lab17.dynamicdatasource.constant; + +/** + * 数据库枚举类 + */ +public class DBConstants { + + /** + * 数据源分组 - 订单库 + */ + public static final String DATASOURCE_ORDERS = "orders"; + + /** + * 数据源分组 - 用户库 + */ + public static final String DATASOURCE_USERS = "users"; + +} diff --git a/lab-17/lab-17-dynamic-datasource-baomidou-01/src/main/java/cn/iocoder/springboot/lab17/dynamicdatasource/dataobject/OrderDO.java b/lab-17/lab-17-dynamic-datasource-baomidou-01/src/main/java/cn/iocoder/springboot/lab17/dynamicdatasource/dataobject/OrderDO.java new file mode 100644 index 00000000..b6cf79f9 --- /dev/null +++ b/lab-17/lab-17-dynamic-datasource-baomidou-01/src/main/java/cn/iocoder/springboot/lab17/dynamicdatasource/dataobject/OrderDO.java @@ -0,0 +1,43 @@ +package cn.iocoder.springboot.lab17.dynamicdatasource.dataobject; + +/** + * 订单 DO + */ +public class OrderDO { + + /** + * 订单编号 + */ + private Integer id; + /** + * 用户编号 + */ + private Integer userId; + + public Integer getId() { + return id; + } + + public OrderDO setId(Integer id) { + this.id = id; + return this; + } + + public Integer getUserId() { + return userId; + } + + public OrderDO setUserId(Integer userId) { + this.userId = userId; + return this; + } + + @Override + public String toString() { + return "OrderDO{" + + "id=" + id + + ", userId=" + userId + + '}'; + } + +} diff --git a/lab-17/lab-17-dynamic-datasource-baomidou-01/src/main/java/cn/iocoder/springboot/lab17/dynamicdatasource/dataobject/UserDO.java b/lab-17/lab-17-dynamic-datasource-baomidou-01/src/main/java/cn/iocoder/springboot/lab17/dynamicdatasource/dataobject/UserDO.java new file mode 100644 index 00000000..e154db26 --- /dev/null +++ b/lab-17/lab-17-dynamic-datasource-baomidou-01/src/main/java/cn/iocoder/springboot/lab17/dynamicdatasource/dataobject/UserDO.java @@ -0,0 +1,43 @@ +package cn.iocoder.springboot.lab17.dynamicdatasource.dataobject; + +/** + * 用户 DO + */ +public class UserDO { + + /** + * 用户编号 + */ + private Integer id; + /** + * 账号 + */ + private String username; + + public Integer getId() { + return id; + } + + public UserDO setId(Integer id) { + this.id = id; + return this; + } + + public String getUsername() { + return username; + } + + public UserDO setUsername(String username) { + this.username = username; + return this; + } + + @Override + public String toString() { + return "UserDO{" + + "id=" + id + + ", username='" + username + '\'' + + '}'; + } + +} diff --git a/lab-17/lab-17-dynamic-datasource-baomidou-01/src/main/java/cn/iocoder/springboot/lab17/dynamicdatasource/mapper/OrderMapper.java b/lab-17/lab-17-dynamic-datasource-baomidou-01/src/main/java/cn/iocoder/springboot/lab17/dynamicdatasource/mapper/OrderMapper.java new file mode 100644 index 00000000..992ac21d --- /dev/null +++ b/lab-17/lab-17-dynamic-datasource-baomidou-01/src/main/java/cn/iocoder/springboot/lab17/dynamicdatasource/mapper/OrderMapper.java @@ -0,0 +1,15 @@ +package cn.iocoder.springboot.lab17.dynamicdatasource.mapper; + +import cn.iocoder.springboot.lab17.dynamicdatasource.constant.DBConstants; +import cn.iocoder.springboot.lab17.dynamicdatasource.dataobject.OrderDO; +import com.baomidou.dynamic.datasource.annotation.DS; +import org.apache.ibatis.annotations.Param; +import org.springframework.stereotype.Repository; + +@Repository +@DS(DBConstants.DATASOURCE_ORDERS) +public interface OrderMapper { + + OrderDO selectById(@Param("id") Integer id); + +} diff --git a/lab-17/lab-17-dynamic-datasource-baomidou-01/src/main/java/cn/iocoder/springboot/lab17/dynamicdatasource/mapper/UserMapper.java b/lab-17/lab-17-dynamic-datasource-baomidou-01/src/main/java/cn/iocoder/springboot/lab17/dynamicdatasource/mapper/UserMapper.java new file mode 100644 index 00000000..8e0b2601 --- /dev/null +++ b/lab-17/lab-17-dynamic-datasource-baomidou-01/src/main/java/cn/iocoder/springboot/lab17/dynamicdatasource/mapper/UserMapper.java @@ -0,0 +1,15 @@ +package cn.iocoder.springboot.lab17.dynamicdatasource.mapper; + +import cn.iocoder.springboot.lab17.dynamicdatasource.constant.DBConstants; +import cn.iocoder.springboot.lab17.dynamicdatasource.dataobject.UserDO; +import com.baomidou.dynamic.datasource.annotation.DS; +import org.apache.ibatis.annotations.Param; +import org.springframework.stereotype.Repository; + +@Repository +@DS(DBConstants.DATASOURCE_USERS) +public interface UserMapper { + + UserDO selectById(@Param("id") Integer id); + +} diff --git a/lab-17/lab-17-dynamic-datasource-baomidou-01/src/main/java/cn/iocoder/springboot/lab17/dynamicdatasource/service/OrderService.java b/lab-17/lab-17-dynamic-datasource-baomidou-01/src/main/java/cn/iocoder/springboot/lab17/dynamicdatasource/service/OrderService.java new file mode 100644 index 00000000..e8ce1fd6 --- /dev/null +++ b/lab-17/lab-17-dynamic-datasource-baomidou-01/src/main/java/cn/iocoder/springboot/lab17/dynamicdatasource/service/OrderService.java @@ -0,0 +1,103 @@ +package cn.iocoder.springboot.lab17.dynamicdatasource.service; + +import cn.iocoder.springboot.lab17.dynamicdatasource.constant.DBConstants; +import cn.iocoder.springboot.lab17.dynamicdatasource.dataobject.OrderDO; +import cn.iocoder.springboot.lab17.dynamicdatasource.dataobject.UserDO; +import cn.iocoder.springboot.lab17.dynamicdatasource.mapper.OrderMapper; +import cn.iocoder.springboot.lab17.dynamicdatasource.mapper.UserMapper; +import com.baomidou.dynamic.datasource.annotation.DS; +import org.springframework.aop.framework.AopContext; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Propagation; +import org.springframework.transaction.annotation.Transactional; + +@Service +public class OrderService { + + @Autowired + private OrderMapper orderMapper; + @Autowired + private UserMapper userMapper; + + private OrderService self() { + return (OrderService) AopContext.currentProxy(); + } + + public void method01() { + // 查询订单 + OrderDO order = orderMapper.selectById(1); + System.out.println(order); + // 查询用户 + UserDO user = userMapper.selectById(1); + System.out.println(user); + } + + @Transactional + public void method02() { + // 查询订单 + OrderDO order = orderMapper.selectById(1); + System.out.println(order); + // 查询用户 + UserDO user = userMapper.selectById(1); + System.out.println(user); + } + + public void method03() { + // 查询订单 + self().method031(); + // 查询用户 + self().method032(); + } + + @Transactional // 报错,因为此时获取的是 primary 对应的 DataSource ,即 users 。 + public void method031() { + OrderDO order = orderMapper.selectById(1); + System.out.println(order); + } + + @Transactional + public void method032() { + UserDO user = userMapper.selectById(1); + System.out.println(user); + } + + public void method04() { + // 查询订单 + self().method041(); + // 查询用户 + self().method042(); + } + + @Transactional + @DS(DBConstants.DATASOURCE_ORDERS) + public void method041() { + OrderDO order = orderMapper.selectById(1); + System.out.println(order); + } + + @Transactional + @DS(DBConstants.DATASOURCE_USERS) + public void method042() { + UserDO user = userMapper.selectById(1); + System.out.println(user); + } + + @Transactional + @DS(DBConstants.DATASOURCE_ORDERS) + public void method05() { + // 查询订单 + OrderDO order = orderMapper.selectById(1); + System.out.println(order); + // 查询用户 + self().method052(); + } + + @Transactional(propagation = Propagation.REQUIRES_NEW) + @DS(DBConstants.DATASOURCE_USERS) + public void method052() { + UserDO user = userMapper.selectById(1); + System.out.println(user); + } + +} diff --git a/lab-17/lab-17-dynamic-datasource-baomidou-01/src/main/resources/application.yaml b/lab-17/lab-17-dynamic-datasource-baomidou-01/src/main/resources/application.yaml new file mode 100644 index 00000000..97387c49 --- /dev/null +++ b/lab-17/lab-17-dynamic-datasource-baomidou-01/src/main/resources/application.yaml @@ -0,0 +1,24 @@ +spring: + datasource: + # datasource 数据源配置内容 + dynamic: + primary: users # TODO 注释 + datasource: + # 订单数据源配置 + orders: + url: jdbc:mysql://127.0.0.1:3306/test_orders?useSSL=false&useUnicode=true&characterEncoding=UTF-8 + driver-class-name: com.mysql.jdbc.Driver + username: root + password: + # 用户数据源配置 + users: + url: jdbc:mysql://127.0.0.1:3306/test_users?useSSL=false&useUnicode=true&characterEncoding=UTF-8 + driver-class-name: com.mysql.jdbc.Driver + username: root + password: + +# mybatis 配置内容 +mybatis: + config-location: classpath:mybatis-config.xml # 配置 MyBatis 配置文件路径 + mapper-locations: classpath:mapper/*.xml # 配置 Mapper XML 地址 + type-aliases-package: cn.iocoder.springboot.lab17.dynamicdatasource.dataobject # 配置数据库实体包路径 diff --git a/lab-17/lab-17-dynamic-datasource-baomidou-01/src/main/resources/mapper/OrderMapper.xml b/lab-17/lab-17-dynamic-datasource-baomidou-01/src/main/resources/mapper/OrderMapper.xml new file mode 100644 index 00000000..4f436f20 --- /dev/null +++ b/lab-17/lab-17-dynamic-datasource-baomidou-01/src/main/resources/mapper/OrderMapper.xml @@ -0,0 +1,16 @@ + + + + + + id, user_id + + + + + diff --git a/lab-17/lab-17-dynamic-datasource-baomidou-01/src/main/resources/mapper/UserMapper.xml b/lab-17/lab-17-dynamic-datasource-baomidou-01/src/main/resources/mapper/UserMapper.xml new file mode 100644 index 00000000..78e5a415 --- /dev/null +++ b/lab-17/lab-17-dynamic-datasource-baomidou-01/src/main/resources/mapper/UserMapper.xml @@ -0,0 +1,16 @@ + + + + + + id, username + + + + + diff --git a/lab-17/lab-17-dynamic-datasource-baomidou-01/src/main/resources/mybatis-config.xml b/lab-17/lab-17-dynamic-datasource-baomidou-01/src/main/resources/mybatis-config.xml new file mode 100644 index 00000000..725aa31a --- /dev/null +++ b/lab-17/lab-17-dynamic-datasource-baomidou-01/src/main/resources/mybatis-config.xml @@ -0,0 +1,19 @@ + + + + + + + + + + + + + + + + + + + diff --git a/lab-17/lab-17-dynamic-datasource-baomidou-01/src/main/resources/sql/db.sql b/lab-17/lab-17-dynamic-datasource-baomidou-01/src/main/resources/sql/db.sql new file mode 100644 index 00000000..caad40dd --- /dev/null +++ b/lab-17/lab-17-dynamic-datasource-baomidou-01/src/main/resources/sql/db.sql @@ -0,0 +1,13 @@ +CREATE TABLE `users` ( + `id` int(11) NOT NULL AUTO_INCREMENT COMMENT '用户编号', + `username` varchar(64) COLLATE utf8mb4_bin DEFAULT NULL COMMENT '账号', + PRIMARY KEY (`id`), + UNIQUE KEY `idx_username` (`username`) +) ENGINE=InnoDB AUTO_INCREMENT=7 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_bin; + + + +CREATE TABLE `orders` ( + `id` int(11) DEFAULT NULL COMMENT '订单编号', + `user_id` int(16) DEFAULT NULL COMMENT '用户编号' +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_bin COMMENT='订单表'; diff --git a/lab-17/lab-17-dynamic-datasource-baomidou-01/src/test/java/cn/iocoder/springboot/lab17/dynamicdatasource/mapper/OrderMapperTest.java b/lab-17/lab-17-dynamic-datasource-baomidou-01/src/test/java/cn/iocoder/springboot/lab17/dynamicdatasource/mapper/OrderMapperTest.java new file mode 100644 index 00000000..6158cf45 --- /dev/null +++ b/lab-17/lab-17-dynamic-datasource-baomidou-01/src/test/java/cn/iocoder/springboot/lab17/dynamicdatasource/mapper/OrderMapperTest.java @@ -0,0 +1,24 @@ +package cn.iocoder.springboot.lab17.dynamicdatasource.mapper; + +import cn.iocoder.springboot.lab17.dynamicdatasource.Application; +import cn.iocoder.springboot.lab17.dynamicdatasource.dataobject.OrderDO; +import org.junit.Test; +import org.junit.runner.RunWith; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.boot.test.context.SpringBootTest; +import org.springframework.test.context.junit4.SpringRunner; + +@RunWith(SpringRunner.class) +@SpringBootTest(classes = Application.class) +public class OrderMapperTest { + + @Autowired + private OrderMapper orderMapper; + + @Test + public void testSelectById() { + OrderDO order = orderMapper.selectById(1); + System.out.println(order); + } + +} diff --git a/lab-17/lab-17-dynamic-datasource-baomidou-01/src/test/java/cn/iocoder/springboot/lab17/dynamicdatasource/mapper/UserMapperTest.java b/lab-17/lab-17-dynamic-datasource-baomidou-01/src/test/java/cn/iocoder/springboot/lab17/dynamicdatasource/mapper/UserMapperTest.java new file mode 100644 index 00000000..0c643024 --- /dev/null +++ b/lab-17/lab-17-dynamic-datasource-baomidou-01/src/test/java/cn/iocoder/springboot/lab17/dynamicdatasource/mapper/UserMapperTest.java @@ -0,0 +1,24 @@ +package cn.iocoder.springboot.lab17.dynamicdatasource.mapper; + +import cn.iocoder.springboot.lab17.dynamicdatasource.Application; +import cn.iocoder.springboot.lab17.dynamicdatasource.dataobject.UserDO; +import org.junit.Test; +import org.junit.runner.RunWith; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.boot.test.context.SpringBootTest; +import org.springframework.test.context.junit4.SpringRunner; + +@RunWith(SpringRunner.class) +@SpringBootTest(classes = Application.class) +public class UserMapperTest { + + @Autowired + private UserMapper userMapper; + + @Test + public void testSelectById() { + UserDO user = userMapper.selectById(1); + System.out.println(user); + } + +} diff --git a/lab-17/lab-17-dynamic-datasource-baomidou-01/src/test/java/cn/iocoder/springboot/lab17/dynamicdatasource/service/OrderServiceTest.java b/lab-17/lab-17-dynamic-datasource-baomidou-01/src/test/java/cn/iocoder/springboot/lab17/dynamicdatasource/service/OrderServiceTest.java new file mode 100644 index 00000000..f40f748a --- /dev/null +++ b/lab-17/lab-17-dynamic-datasource-baomidou-01/src/test/java/cn/iocoder/springboot/lab17/dynamicdatasource/service/OrderServiceTest.java @@ -0,0 +1,42 @@ +package cn.iocoder.springboot.lab17.dynamicdatasource.service; + +import cn.iocoder.springboot.lab17.dynamicdatasource.Application; +import org.junit.Test; +import org.junit.runner.RunWith; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.boot.test.context.SpringBootTest; +import org.springframework.test.context.junit4.SpringRunner; + +@RunWith(SpringRunner.class) +@SpringBootTest(classes = Application.class) +public class OrderServiceTest { + + @Autowired + private OrderService orderService; + + @Test + public void testMethod01() { + orderService.method01(); + } + + @Test + public void testMethod02() { + orderService.method02(); + } + + @Test + public void testMethod03() { + orderService.method03(); + } + + @Test + public void testMethod04() { + orderService.method04(); + } + + @Test + public void testMethod05() { + orderService.method05(); + } + +} diff --git a/lab-17/lab-17-dynamic-datasource-baomidou-02/pom.xml b/lab-17/lab-17-dynamic-datasource-baomidou-02/pom.xml new file mode 100644 index 00000000..37e324a3 --- /dev/null +++ b/lab-17/lab-17-dynamic-datasource-baomidou-02/pom.xml @@ -0,0 +1,15 @@ + + + + lab-17 + cn.iocoder.springboot.labs + 1.0-SNAPSHOT + + 4.0.0 + + lab-17-dynamic-datasource-baomidou-02 + + + diff --git a/lab-17/lab-17-dynamic-datasource-mybatis/pom.xml b/lab-17/lab-17-dynamic-datasource-mybatis/pom.xml new file mode 100644 index 00000000..8acdc02a --- /dev/null +++ b/lab-17/lab-17-dynamic-datasource-mybatis/pom.xml @@ -0,0 +1,49 @@ + + + + org.springframework.boot + spring-boot-starter-parent + 2.1.3.RELEASE + + + 4.0.0 + + lab-17-dynamic-datasource-mybatis + + + + + org.springframework.boot + spring-boot-starter-jdbc + + + mysql + mysql-connector-java + 5.1.48 + + + + + org.mybatis.spring.boot + mybatis-spring-boot-starter + 2.1.1 + + + + + org.springframework + spring-aspects + + + + + org.springframework.boot + spring-boot-starter-test + test + + + + + diff --git a/lab-17/lab-17-dynamic-datasource-mybatis/src/main/java/cn/iocoder/springboot/lab17/dynamicdatasource/Application.java b/lab-17/lab-17-dynamic-datasource-mybatis/src/main/java/cn/iocoder/springboot/lab17/dynamicdatasource/Application.java new file mode 100644 index 00000000..f87769aa --- /dev/null +++ b/lab-17/lab-17-dynamic-datasource-mybatis/src/main/java/cn/iocoder/springboot/lab17/dynamicdatasource/Application.java @@ -0,0 +1,9 @@ +package cn.iocoder.springboot.lab17.dynamicdatasource; + +import org.springframework.boot.autoconfigure.SpringBootApplication; +import org.springframework.context.annotation.EnableAspectJAutoProxy; + +@SpringBootApplication +@EnableAspectJAutoProxy(exposeProxy = true) // http://www.voidcn.com/article/p-zddcuyii-bpt.html +public class Application { +} diff --git a/lab-17/lab-17-dynamic-datasource-mybatis/src/main/java/cn/iocoder/springboot/lab17/dynamicdatasource/config/MyBatisOrdersConfig.java b/lab-17/lab-17-dynamic-datasource-mybatis/src/main/java/cn/iocoder/springboot/lab17/dynamicdatasource/config/MyBatisOrdersConfig.java new file mode 100644 index 00000000..c1f2964a --- /dev/null +++ b/lab-17/lab-17-dynamic-datasource-mybatis/src/main/java/cn/iocoder/springboot/lab17/dynamicdatasource/config/MyBatisOrdersConfig.java @@ -0,0 +1,64 @@ +package cn.iocoder.springboot.lab17.dynamicdatasource.config; + +import cn.iocoder.springboot.lab17.dynamicdatasource.constant.DBConstants; +import org.apache.ibatis.session.SqlSessionFactory; +import org.mybatis.spring.SqlSessionFactoryBean; +import org.mybatis.spring.SqlSessionTemplate; +import org.mybatis.spring.annotation.MapperScan; +import org.springframework.boot.context.properties.ConfigurationProperties; +import org.springframework.boot.jdbc.DataSourceBuilder; +import org.springframework.context.annotation.Bean; +import org.springframework.context.annotation.Configuration; +import org.springframework.core.io.support.PathMatchingResourcePatternResolver; +import org.springframework.jdbc.datasource.DataSourceTransactionManager; +import org.springframework.transaction.PlatformTransactionManager; + +import javax.sql.DataSource; + +@Configuration +@MapperScan(basePackages = "cn.iocoder.springboot.lab17.dynamicdatasource.mapper.orders", sqlSessionTemplateRef = "ordersSqlSessionTemplate") +public class MyBatisOrdersConfig { + + /** + * 创建 orders 数据源 + */ + @Bean(name = "ordersDataSource") + @ConfigurationProperties(prefix = "spring.datasource.orders") + public DataSource dataSource() { + return DataSourceBuilder.create().build(); + } + + /** + * 创建 MyBatis SqlSessionFactory + */ + @Bean(name = "ordersSqlSessionFactory") + public SqlSessionFactory sqlSessionFactory() throws Exception { + SqlSessionFactoryBean bean = new SqlSessionFactoryBean(); + // 设置 orders 数据源 + bean.setDataSource(this.dataSource()); + // 设置 entity 所在包 + bean.setTypeAliasesPackage("cn.iocoder.springboot.lab17.dynamicdatasource.dataobject"); + // 设置 config 路径 + bean.setConfigLocation(new PathMatchingResourcePatternResolver().getResource("classpath:mybatis-config.xml")); + // 设置 mapper 路径 + bean.setMapperLocations(new PathMatchingResourcePatternResolver().getResources("classpath:mapper/orders/*.xml")); + return bean.getObject(); + } + + /** + * 创建 MyBatis SqlSessionTemplate + */ + @Bean(name = "ordersSqlSessionTemplate") + public SqlSessionTemplate sqlSessionTemplate() throws Exception { + return new SqlSessionTemplate(this.sqlSessionFactory()); + } + + /** + * 创建 orders 数据源的 TransactionManager 事务管理器 + */ + @Bean(name = DBConstants.TX_MANAGER_ORDERS) + public PlatformTransactionManager usersTransactionManager() { + return new DataSourceTransactionManager(this.dataSource()); + } + +} diff --git a/lab-17/lab-17-dynamic-datasource-mybatis/src/main/java/cn/iocoder/springboot/lab17/dynamicdatasource/config/MyBatisUsersConfig.java b/lab-17/lab-17-dynamic-datasource-mybatis/src/main/java/cn/iocoder/springboot/lab17/dynamicdatasource/config/MyBatisUsersConfig.java new file mode 100644 index 00000000..d6f95bc5 --- /dev/null +++ b/lab-17/lab-17-dynamic-datasource-mybatis/src/main/java/cn/iocoder/springboot/lab17/dynamicdatasource/config/MyBatisUsersConfig.java @@ -0,0 +1,64 @@ +package cn.iocoder.springboot.lab17.dynamicdatasource.config; + +import cn.iocoder.springboot.lab17.dynamicdatasource.constant.DBConstants; +import org.apache.ibatis.session.SqlSessionFactory; +import org.mybatis.spring.SqlSessionFactoryBean; +import org.mybatis.spring.SqlSessionTemplate; +import org.mybatis.spring.annotation.MapperScan; +import org.springframework.boot.context.properties.ConfigurationProperties; +import org.springframework.boot.jdbc.DataSourceBuilder; +import org.springframework.context.annotation.Bean; +import org.springframework.context.annotation.Configuration; +import org.springframework.core.io.support.PathMatchingResourcePatternResolver; +import org.springframework.jdbc.datasource.DataSourceTransactionManager; +import org.springframework.transaction.PlatformTransactionManager; + +import javax.sql.DataSource; + +@Configuration +@MapperScan(basePackages = "cn.iocoder.springboot.lab17.dynamicdatasource.mapper.users", sqlSessionTemplateRef = "usersSqlSessionTemplate") +public class MyBatisUsersConfig { + + /** + * 创建 users 数据源 + */ + @Bean(name = "usersDataSource") + @ConfigurationProperties(prefix = "spring.datasource.users") + public DataSource dataSource() { + return DataSourceBuilder.create().build(); + } + + /** + * 创建 MyBatis SqlSessionFactory + */ + @Bean(name = "sqlSessionFactory") + public SqlSessionFactory sqlSessionFactory() throws Exception { + SqlSessionFactoryBean bean = new SqlSessionFactoryBean(); + // 设置 users 数据源 + bean.setDataSource(this.dataSource()); + // 设置 entity 所在包 + bean.setTypeAliasesPackage("cn.iocoder.springboot.lab17.dynamicdatasource.dataobject"); + // 设置 config 路径 + bean.setConfigLocation(new PathMatchingResourcePatternResolver().getResource("classpath:mybatis-config.xml")); + // 设置 mapper 路径 + bean.setMapperLocations(new PathMatchingResourcePatternResolver().getResources("classpath:mapper/users/*.xml")); + return bean.getObject(); + } + + /** + * 创建 MyBatis SqlSessionTemplate + */ + @Bean(name = "usersSqlSessionTemplate") + public SqlSessionTemplate sqlSessionTemplate() throws Exception { + return new SqlSessionTemplate(this.sqlSessionFactory()); + } + + /** + * 创建 users 数据源的 TransactionManager 事务管理器 + */ + @Bean(name = DBConstants.TX_MANAGER_USERS) + public PlatformTransactionManager ordersTransactionManager() { + return new DataSourceTransactionManager(this.dataSource()); + } + +} diff --git a/lab-17/lab-17-dynamic-datasource-mybatis/src/main/java/cn/iocoder/springboot/lab17/dynamicdatasource/constant/DBConstants.java b/lab-17/lab-17-dynamic-datasource-mybatis/src/main/java/cn/iocoder/springboot/lab17/dynamicdatasource/constant/DBConstants.java new file mode 100644 index 00000000..39251add --- /dev/null +++ b/lab-17/lab-17-dynamic-datasource-mybatis/src/main/java/cn/iocoder/springboot/lab17/dynamicdatasource/constant/DBConstants.java @@ -0,0 +1,18 @@ +package cn.iocoder.springboot.lab17.dynamicdatasource.constant; + +/** + * 数据库枚举类 + */ +public class DBConstants { + + /** + * 事务管理器 - 订单库 + */ + public static final String TX_MANAGER_ORDERS = "ordersTransactionManager"; + + /** + * 事务管理器 - 用户库 + */ + public static final String TX_MANAGER_USERS = "usersTransactionManager"; + +} diff --git a/lab-17/lab-17-dynamic-datasource-mybatis/src/main/java/cn/iocoder/springboot/lab17/dynamicdatasource/dataobject/OrderDO.java b/lab-17/lab-17-dynamic-datasource-mybatis/src/main/java/cn/iocoder/springboot/lab17/dynamicdatasource/dataobject/OrderDO.java new file mode 100644 index 00000000..b6cf79f9 --- /dev/null +++ b/lab-17/lab-17-dynamic-datasource-mybatis/src/main/java/cn/iocoder/springboot/lab17/dynamicdatasource/dataobject/OrderDO.java @@ -0,0 +1,43 @@ +package cn.iocoder.springboot.lab17.dynamicdatasource.dataobject; + +/** + * 订单 DO + */ +public class OrderDO { + + /** + * 订单编号 + */ + private Integer id; + /** + * 用户编号 + */ + private Integer userId; + + public Integer getId() { + return id; + } + + public OrderDO setId(Integer id) { + this.id = id; + return this; + } + + public Integer getUserId() { + return userId; + } + + public OrderDO setUserId(Integer userId) { + this.userId = userId; + return this; + } + + @Override + public String toString() { + return "OrderDO{" + + "id=" + id + + ", userId=" + userId + + '}'; + } + +} diff --git a/lab-17/lab-17-dynamic-datasource-mybatis/src/main/java/cn/iocoder/springboot/lab17/dynamicdatasource/dataobject/UserDO.java b/lab-17/lab-17-dynamic-datasource-mybatis/src/main/java/cn/iocoder/springboot/lab17/dynamicdatasource/dataobject/UserDO.java new file mode 100644 index 00000000..e154db26 --- /dev/null +++ b/lab-17/lab-17-dynamic-datasource-mybatis/src/main/java/cn/iocoder/springboot/lab17/dynamicdatasource/dataobject/UserDO.java @@ -0,0 +1,43 @@ +package cn.iocoder.springboot.lab17.dynamicdatasource.dataobject; + +/** + * 用户 DO + */ +public class UserDO { + + /** + * 用户编号 + */ + private Integer id; + /** + * 账号 + */ + private String username; + + public Integer getId() { + return id; + } + + public UserDO setId(Integer id) { + this.id = id; + return this; + } + + public String getUsername() { + return username; + } + + public UserDO setUsername(String username) { + this.username = username; + return this; + } + + @Override + public String toString() { + return "UserDO{" + + "id=" + id + + ", username='" + username + '\'' + + '}'; + } + +} diff --git a/lab-17/lab-17-dynamic-datasource-mybatis/src/main/java/cn/iocoder/springboot/lab17/dynamicdatasource/mapper/orders/OrderMapper.java b/lab-17/lab-17-dynamic-datasource-mybatis/src/main/java/cn/iocoder/springboot/lab17/dynamicdatasource/mapper/orders/OrderMapper.java new file mode 100644 index 00000000..0c8708e8 --- /dev/null +++ b/lab-17/lab-17-dynamic-datasource-mybatis/src/main/java/cn/iocoder/springboot/lab17/dynamicdatasource/mapper/orders/OrderMapper.java @@ -0,0 +1,12 @@ +package cn.iocoder.springboot.lab17.dynamicdatasource.mapper.orders; + +import cn.iocoder.springboot.lab17.dynamicdatasource.dataobject.OrderDO; +import org.apache.ibatis.annotations.Param; +import org.springframework.stereotype.Repository; + +@Repository +public interface OrderMapper { + + OrderDO selectById(@Param("id") Integer id); + +} diff --git a/lab-17/lab-17-dynamic-datasource-mybatis/src/main/java/cn/iocoder/springboot/lab17/dynamicdatasource/mapper/users/UserMapper.java b/lab-17/lab-17-dynamic-datasource-mybatis/src/main/java/cn/iocoder/springboot/lab17/dynamicdatasource/mapper/users/UserMapper.java new file mode 100644 index 00000000..e58cc38d --- /dev/null +++ b/lab-17/lab-17-dynamic-datasource-mybatis/src/main/java/cn/iocoder/springboot/lab17/dynamicdatasource/mapper/users/UserMapper.java @@ -0,0 +1,12 @@ +package cn.iocoder.springboot.lab17.dynamicdatasource.mapper.users; + +import cn.iocoder.springboot.lab17.dynamicdatasource.dataobject.UserDO; +import org.apache.ibatis.annotations.Param; +import org.springframework.stereotype.Repository; + +@Repository +public interface UserMapper { + + UserDO selectById(@Param("id") Integer id); + +} diff --git a/lab-17/lab-17-dynamic-datasource-mybatis/src/main/java/cn/iocoder/springboot/lab17/dynamicdatasource/service/OrderService.java b/lab-17/lab-17-dynamic-datasource-mybatis/src/main/java/cn/iocoder/springboot/lab17/dynamicdatasource/service/OrderService.java new file mode 100644 index 00000000..199803c4 --- /dev/null +++ b/lab-17/lab-17-dynamic-datasource-mybatis/src/main/java/cn/iocoder/springboot/lab17/dynamicdatasource/service/OrderService.java @@ -0,0 +1,80 @@ +package cn.iocoder.springboot.lab17.dynamicdatasource.service; + +import cn.iocoder.springboot.lab17.dynamicdatasource.constant.DBConstants; +import cn.iocoder.springboot.lab17.dynamicdatasource.dataobject.OrderDO; +import cn.iocoder.springboot.lab17.dynamicdatasource.dataobject.UserDO; +import cn.iocoder.springboot.lab17.dynamicdatasource.mapper.orders.OrderMapper; +import cn.iocoder.springboot.lab17.dynamicdatasource.mapper.users.UserMapper; +import org.springframework.aop.framework.AopContext; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Propagation; +import org.springframework.transaction.annotation.Transactional; + +@Service +public class OrderService { + + @Autowired + private OrderMapper orderMapper; + @Autowired + private UserMapper userMapper; + + private OrderService self() { + return (OrderService) AopContext.currentProxy(); + } + + public void method01() { + // 查询订单 + OrderDO order = orderMapper.selectById(1); + System.out.println(order); + // 查询用户 + UserDO user = userMapper.selectById(1); + System.out.println(user); + } + + @Transactional // 报错,找不到事务管理器 + public void method02() { + // 查询订单 + OrderDO order = orderMapper.selectById(1); + System.out.println(order); + // 查询用户 + UserDO user = userMapper.selectById(1); + System.out.println(user); + } + + public void method03() { + // 查询订单 + self().method031(); + // 查询用户 + self().method032(); + } + + @Transactional(transactionManager = DBConstants.TX_MANAGER_ORDERS) + public void method031() { + OrderDO order = orderMapper.selectById(1); + System.out.println(order); + } + + @Transactional(transactionManager = DBConstants.TX_MANAGER_USERS) + public void method032() { + UserDO user = userMapper.selectById(1); + System.out.println(user); + } + + @Transactional(transactionManager = DBConstants.TX_MANAGER_ORDERS) + public void method05() { + // 查询订单 + OrderDO order = orderMapper.selectById(1); + System.out.println(order); + // 查询用户 + self().method052(); + } + + @Transactional(transactionManager = DBConstants.TX_MANAGER_USERS, + propagation = Propagation.REQUIRES_NEW) + public void method052() { + UserDO user = userMapper.selectById(1); + System.out.println(user); + } + +} diff --git a/lab-17/lab-17-dynamic-datasource-mybatis/src/main/resources/application.yaml b/lab-17/lab-17-dynamic-datasource-mybatis/src/main/resources/application.yaml new file mode 100644 index 00000000..7033b791 --- /dev/null +++ b/lab-17/lab-17-dynamic-datasource-mybatis/src/main/resources/application.yaml @@ -0,0 +1,20 @@ +spring: + # datasource 数据源配置内容 + datasource: + # 订单数据源配置 + orders: + jdbc-url: jdbc:mysql://127.0.0.1:3306/test_orders?useSSL=false&useUnicode=true&characterEncoding=UTF-8 + driver-class-name: com.mysql.jdbc.Driver + username: root + password: + # 用户数据源配置 + users: + jdbc-url: jdbc:mysql://127.0.0.1:3306/test_users?useSSL=false&useUnicode=true&characterEncoding=UTF-8 + driver-class-name: com.mysql.jdbc.Driver + username: root + password: + +# mybatis 配置内容 +#mybatis: +# config-location: classpath:mybatis-config.xml # 配置 MyBatis 配置文件路径 +# type-aliases-package: cn.iocoder.springboot.lab17.dynamicdatasource.dataobject # 配置数据库实体包路径 diff --git a/lab-17/lab-17-dynamic-datasource-mybatis/src/main/resources/mapper/orders/OrderMapper.xml b/lab-17/lab-17-dynamic-datasource-mybatis/src/main/resources/mapper/orders/OrderMapper.xml new file mode 100644 index 00000000..f1ea09f9 --- /dev/null +++ b/lab-17/lab-17-dynamic-datasource-mybatis/src/main/resources/mapper/orders/OrderMapper.xml @@ -0,0 +1,16 @@ + + + + + + id, user_id + + + + + diff --git a/lab-17/lab-17-dynamic-datasource-mybatis/src/main/resources/mapper/users/UserMapper.xml b/lab-17/lab-17-dynamic-datasource-mybatis/src/main/resources/mapper/users/UserMapper.xml new file mode 100644 index 00000000..9079fad9 --- /dev/null +++ b/lab-17/lab-17-dynamic-datasource-mybatis/src/main/resources/mapper/users/UserMapper.xml @@ -0,0 +1,16 @@ + + + + + + id, username + + + + + diff --git a/lab-17/lab-17-dynamic-datasource-mybatis/src/main/resources/mybatis-config.xml b/lab-17/lab-17-dynamic-datasource-mybatis/src/main/resources/mybatis-config.xml new file mode 100644 index 00000000..725aa31a --- /dev/null +++ b/lab-17/lab-17-dynamic-datasource-mybatis/src/main/resources/mybatis-config.xml @@ -0,0 +1,19 @@ + + + + + + + + + + + + + + + + + + + diff --git a/lab-17/lab-17-dynamic-datasource-mybatis/src/main/resources/sql/db.sql b/lab-17/lab-17-dynamic-datasource-mybatis/src/main/resources/sql/db.sql new file mode 100644 index 00000000..caad40dd --- /dev/null +++ b/lab-17/lab-17-dynamic-datasource-mybatis/src/main/resources/sql/db.sql @@ -0,0 +1,13 @@ +CREATE TABLE `users` ( + `id` int(11) NOT NULL AUTO_INCREMENT COMMENT '用户编号', + `username` varchar(64) COLLATE utf8mb4_bin DEFAULT NULL COMMENT '账号', + PRIMARY KEY (`id`), + UNIQUE KEY `idx_username` (`username`) +) ENGINE=InnoDB AUTO_INCREMENT=7 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_bin; + + + +CREATE TABLE `orders` ( + `id` int(11) DEFAULT NULL COMMENT '订单编号', + `user_id` int(16) DEFAULT NULL COMMENT '用户编号' +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_bin COMMENT='订单表'; diff --git a/lab-17/lab-17-dynamic-datasource-mybatis/src/test/java/cn/iocoder/springboot/lab17/dynamicdatasource/mapper/orders/OrderMapperTest.java b/lab-17/lab-17-dynamic-datasource-mybatis/src/test/java/cn/iocoder/springboot/lab17/dynamicdatasource/mapper/orders/OrderMapperTest.java new file mode 100644 index 00000000..445673f5 --- /dev/null +++ b/lab-17/lab-17-dynamic-datasource-mybatis/src/test/java/cn/iocoder/springboot/lab17/dynamicdatasource/mapper/orders/OrderMapperTest.java @@ -0,0 +1,24 @@ +package cn.iocoder.springboot.lab17.dynamicdatasource.mapper.orders; + +import cn.iocoder.springboot.lab17.dynamicdatasource.Application; +import cn.iocoder.springboot.lab17.dynamicdatasource.dataobject.OrderDO; +import org.junit.Test; +import org.junit.runner.RunWith; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.boot.test.context.SpringBootTest; +import org.springframework.test.context.junit4.SpringRunner; + +@RunWith(SpringRunner.class) +@SpringBootTest(classes = Application.class) +public class OrderMapperTest { + + @Autowired + private OrderMapper orderMapper; + + @Test + public void testSelectById() { + OrderDO order = orderMapper.selectById(1); + System.out.println(order); + } + +} diff --git a/lab-17/lab-17-dynamic-datasource-mybatis/src/test/java/cn/iocoder/springboot/lab17/dynamicdatasource/mapper/users/UserMapperTest.java b/lab-17/lab-17-dynamic-datasource-mybatis/src/test/java/cn/iocoder/springboot/lab17/dynamicdatasource/mapper/users/UserMapperTest.java new file mode 100644 index 00000000..6d72e2b9 --- /dev/null +++ b/lab-17/lab-17-dynamic-datasource-mybatis/src/test/java/cn/iocoder/springboot/lab17/dynamicdatasource/mapper/users/UserMapperTest.java @@ -0,0 +1,24 @@ +package cn.iocoder.springboot.lab17.dynamicdatasource.mapper.users; + +import cn.iocoder.springboot.lab17.dynamicdatasource.Application; +import cn.iocoder.springboot.lab17.dynamicdatasource.dataobject.UserDO; +import org.junit.Test; +import org.junit.runner.RunWith; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.boot.test.context.SpringBootTest; +import org.springframework.test.context.junit4.SpringRunner; + +@RunWith(SpringRunner.class) +@SpringBootTest(classes = Application.class) +public class UserMapperTest { + + @Autowired + private UserMapper userMapper; + + @Test + public void testSelectById() { + UserDO user = userMapper.selectById(1); + System.out.println(user); + } + +} diff --git a/lab-17/lab-17-dynamic-datasource-mybatis/src/test/java/cn/iocoder/springboot/lab17/dynamicdatasource/package-info.java b/lab-17/lab-17-dynamic-datasource-mybatis/src/test/java/cn/iocoder/springboot/lab17/dynamicdatasource/package-info.java new file mode 100644 index 00000000..d2a8f33d --- /dev/null +++ b/lab-17/lab-17-dynamic-datasource-mybatis/src/test/java/cn/iocoder/springboot/lab17/dynamicdatasource/package-info.java @@ -0,0 +1 @@ +package cn.iocoder.springboot.lab17.dynamicdatasource; diff --git a/lab-17/lab-17-dynamic-datasource-mybatis/src/test/java/cn/iocoder/springboot/lab17/dynamicdatasource/service/OrderServiceTest.java b/lab-17/lab-17-dynamic-datasource-mybatis/src/test/java/cn/iocoder/springboot/lab17/dynamicdatasource/service/OrderServiceTest.java new file mode 100644 index 00000000..672aba38 --- /dev/null +++ b/lab-17/lab-17-dynamic-datasource-mybatis/src/test/java/cn/iocoder/springboot/lab17/dynamicdatasource/service/OrderServiceTest.java @@ -0,0 +1,37 @@ +package cn.iocoder.springboot.lab17.dynamicdatasource.service; + +import cn.iocoder.springboot.lab17.dynamicdatasource.Application; +import org.junit.Test; +import org.junit.runner.RunWith; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.boot.test.context.SpringBootTest; +import org.springframework.test.context.junit4.SpringRunner; + +@RunWith(SpringRunner.class) +@SpringBootTest(classes = Application.class) +public class OrderServiceTest { + + @Autowired + private OrderService orderService; + + @Test + public void testMethod01() { + orderService.method01(); + } + + @Test + public void testMethod02() { + orderService.method02(); + } + + @Test + public void testMethod03() { + orderService.method03(); + } + + @Test + public void testMethod05() { + orderService.method05(); + } + +} diff --git a/lab-17/pom.xml b/lab-17/pom.xml new file mode 100644 index 00000000..8678e13c --- /dev/null +++ b/lab-17/pom.xml @@ -0,0 +1,21 @@ + + + + labs-parent + cn.iocoder.springboot.labs + 1.0-SNAPSHOT + + 4.0.0 + + lab-17 + pom + + lab-17-dynamic-datasource-baomidou-01 + lab-17-dynamic-datasource-baomidou-02 + lab-17-dynamic-datasource-mybatis + + + + diff --git a/pom.xml b/pom.xml index 8e6f6ad0..101945ce 100644 --- a/pom.xml +++ b/pom.xml @@ -25,6 +25,7 @@ lab-14 lab-15 lab-16 + lab-17