Browse Source

spring-boot-demo-multi-datasource-mybatis 完成

pull/1/head
Yangkai.Shen 5 years ago
parent
commit
ccd994aea0
11 changed files with 265 additions and 2 deletions
  1. +2
    -2
      TODO.md
  2. +33
    -0
      spring-boot-demo-multi-datasource-mybatis/pom.xml
  3. +10
    -0
      spring-boot-demo-multi-datasource-mybatis/sql/db.sql
  4. +15
    -0
      spring-boot-demo-multi-datasource-mybatis/src/main/java/com/xkcoding/multi/datasource/mybatis/SpringBootDemoMultiDatasourceMybatisApplication.java
  5. +20
    -0
      spring-boot-demo-multi-datasource-mybatis/src/main/java/com/xkcoding/multi/datasource/mybatis/mapper/UserMapper.java
  6. +49
    -0
      spring-boot-demo-multi-datasource-mybatis/src/main/java/com/xkcoding/multi/datasource/mybatis/model/User.java
  7. +27
    -0
      spring-boot-demo-multi-datasource-mybatis/src/main/java/com/xkcoding/multi/datasource/mybatis/service/UserService.java
  8. +39
    -0
      spring-boot-demo-multi-datasource-mybatis/src/main/java/com/xkcoding/multi/datasource/mybatis/service/impl/UserServiceImpl.java
  9. +0
    -0
      spring-boot-demo-multi-datasource-mybatis/src/main/resources/application.properties
  10. +18
    -0
      spring-boot-demo-multi-datasource-mybatis/src/main/resources/application.yml
  11. +52
    -0
      spring-boot-demo-multi-datasource-mybatis/src/test/java/com/xkcoding/multi/datasource/mybatis/service/impl/UserServiceImplTest.java

+ 2
- 2
TODO.md View File

@@ -1,5 +1,5 @@
# spring-boot-demo 项目 todo-list
## 模块计划(已完成:40 / 51)
## 模块计划(已完成:41 / 51)

- [x] ~~spring-boot-demo-helloworld(Helloworld 示例)~~
- [x] ~~spring-boot-demo-properties(读取配置文件信息)~~
@@ -49,7 +49,7 @@
- [x] ~~spring-boot-demo-mongodb(集成 MongoDb)~~
- [x] ~~spring-boot-demo-neo4j(集成 neo4j 图数据库)~~
- [x] ~~spring-boot-demo-docker(打包成 docker 镜像)~~
- [ ] spring-boot-demo-multi-datasource-jpa(集成JPA多数据源)
- [x] ~~spring-boot-demo-multi-datasource-jpa(集成JPA多数据源)~~
- [ ] spring-boot-demo-multi-datasource-mybatis(集成mybatis多数据源)
- [ ] spring-boot-demo-sharding-jdbc(集成 sharding-jdbc 实现分库分表)



+ 33
- 0
spring-boot-demo-multi-datasource-mybatis/pom.xml View File

@@ -33,6 +33,39 @@
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
</dependency>

<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
</dependency>

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

<dependency>
<groupId>com.baomidou</groupId>
<artifactId>mybatis-plus-boot-starter</artifactId>
<version>3.0.7.1</version>
</dependency>

<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<optional>true</optional>
</dependency>

<dependency>
<groupId>cn.hutool</groupId>
<artifactId>hutool-all</artifactId>
</dependency>

<dependency>
<groupId>com.google.guava</groupId>
<artifactId>guava</artifactId>
</dependency>
</dependencies>

<build>


+ 10
- 0
spring-boot-demo-multi-datasource-mybatis/sql/db.sql View File

@@ -0,0 +1,10 @@
DROP TABLE IF EXISTS `multi_user`;
CREATE TABLE `multi_user`(
`id` bigint(64) NOT NULL,
`name` varchar(50) DEFAULT NULL,
`age` int(30) DEFAULT NULL,
PRIMARY KEY (`id`) USING BTREE
) ENGINE = InnoDB
AUTO_INCREMENT = 1
CHARACTER SET = utf8
COLLATE = utf8_general_ci;

+ 15
- 0
spring-boot-demo-multi-datasource-mybatis/src/main/java/com/xkcoding/multi/datasource/mybatis/SpringBootDemoMultiDatasourceMybatisApplication.java View File

@@ -1,9 +1,24 @@
package com.xkcoding.multi.datasource.mybatis;

import org.mybatis.spring.annotation.MapperScan;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;

/**
* <p>
* 启动器
* </p>
*
* @package: com.xkcoding.multi.datasource.mybatis
* @description: 启动器
* @author: yangkai.shen
* @date: Created in 2019-01-21 14:19
* @copyright: Copyright (c) 2019
* @version: V1.0
* @modified: yangkai.shen
*/
@SpringBootApplication
@MapperScan(basePackages = "com.xkcoding.multi.datasource.mybatis.mapper")
public class SpringBootDemoMultiDatasourceMybatisApplication {

public static void main(String[] args) {


+ 20
- 0
spring-boot-demo-multi-datasource-mybatis/src/main/java/com/xkcoding/multi/datasource/mybatis/mapper/UserMapper.java View File

@@ -0,0 +1,20 @@
package com.xkcoding.multi.datasource.mybatis.mapper;

import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.xkcoding.multi.datasource.mybatis.model.User;

/**
* <p>
* 数据访问层
* </p>
*
* @package: com.xkcoding.multi.datasource.mybatis.mapper
* @description: 数据访问层
* @author: yangkai.shen
* @date: Created in 2019-01-21 14:28
* @copyright: Copyright (c) 2019
* @version: V1.0
* @modified: yangkai.shen
*/
public interface UserMapper extends BaseMapper<User> {
}

+ 49
- 0
spring-boot-demo-multi-datasource-mybatis/src/main/java/com/xkcoding/multi/datasource/mybatis/model/User.java View File

@@ -0,0 +1,49 @@
package com.xkcoding.multi.datasource.mybatis.model;

import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;

import java.io.Serializable;

/**
* <p>
* User实体类
* </p>
*
* @package: com.xkcoding.multi.datasource.mybatis.model
* @description: User实体类
* @author: yangkai.shen
* @date: Created in 2019-01-21 14:19
* @copyright: Copyright (c) 2019
* @version: V1.0
* @modified: yangkai.shen
*/
@Data
@TableName("multi_user")
@NoArgsConstructor
@AllArgsConstructor
@Builder
public class User implements Serializable {
private static final long serialVersionUID = -1923859222295750467L;

/**
* 主键
*/
@TableId(type = IdType.ID_WORKER)
private Long id;

/**
* 姓名
*/
private String name;

/**
* 年龄
*/
private Integer age;
}

+ 27
- 0
spring-boot-demo-multi-datasource-mybatis/src/main/java/com/xkcoding/multi/datasource/mybatis/service/UserService.java View File

@@ -0,0 +1,27 @@
package com.xkcoding.multi.datasource.mybatis.service;

import com.baomidou.mybatisplus.extension.service.IService;
import com.xkcoding.multi.datasource.mybatis.model.User;

/**
* <p>
* 数据服务层
* </p>
*
* @package: com.xkcoding.multi.datasource.mybatis.service
* @description: 数据服务层
* @author: yangkai.shen
* @date: Created in 2019-01-21 14:31
* @copyright: Copyright (c) 2019
* @version: V1.0
* @modified: yangkai.shen
*/
public interface UserService extends IService<User> {

/**
* 添加 User
*
* @param user 用户
*/
void addUser(User user);
}

+ 39
- 0
spring-boot-demo-multi-datasource-mybatis/src/main/java/com/xkcoding/multi/datasource/mybatis/service/impl/UserServiceImpl.java View File

@@ -0,0 +1,39 @@
package com.xkcoding.multi.datasource.mybatis.service.impl;

import com.baomidou.dynamic.datasource.annotation.DS;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.xkcoding.multi.datasource.mybatis.mapper.UserMapper;
import com.xkcoding.multi.datasource.mybatis.model.User;
import com.xkcoding.multi.datasource.mybatis.service.UserService;
import org.springframework.stereotype.Service;

import java.util.List;

/**
* <p>
* TODO
* </p>
*
* @package: com.xkcoding.multi.datasource.mybatis.service.impl
* @description: TODO
* @author: yangkai.shen
* @date: Created in 2019-01-21 14:37
* @copyright: Copyright (c) 2019
* @version: V1.0
* @modified: yangkai.shen
*/
@Service
@DS("slave")
public class UserServiceImpl extends ServiceImpl<UserMapper, User> implements UserService {

/**
* 类上 {@code @DS("slave")} 代表默认从库,在方法上写 {@code @DS("master")} 代表默认主库
*
* @param user 用户
*/
@DS("master")
@Override
public void addUser(User user) {
baseMapper.insert(user);
}
}

+ 0
- 0
spring-boot-demo-multi-datasource-mybatis/src/main/resources/application.properties View File


+ 18
- 0
spring-boot-demo-multi-datasource-mybatis/src/main/resources/application.yml View File

@@ -0,0 +1,18 @@
spring:
datasource:
dynamic:
datasource:
master:
username: root
password: root
url: jdbc:mysql://127.0.0.1:3306/spring-boot-demo?useUnicode=true&characterEncoding=UTF-8&useSSL=false&autoReconnect=true&failOverReadOnly=false&serverTimezone=GMT%2B8
driver-class-name: com.mysql.cj.jdbc.Driver
slave:
username: root
password: root
url: jdbc:mysql://127.0.0.1:3306/spring-boot-demo-2?useUnicode=true&characterEncoding=UTF-8&useSSL=false&autoReconnect=true&failOverReadOnly=false&serverTimezone=GMT%2B8
driver-class-name: com.mysql.cj.jdbc.Driver
mp-enabled: true
logging:
level:
com.xkcoding.multi.datasource.mybatis: debug

+ 52
- 0
spring-boot-demo-multi-datasource-mybatis/src/test/java/com/xkcoding/multi/datasource/mybatis/service/impl/UserServiceImplTest.java View File

@@ -0,0 +1,52 @@
package com.xkcoding.multi.datasource.mybatis.service.impl;

import cn.hutool.json.JSONUtil;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.xkcoding.multi.datasource.mybatis.SpringBootDemoMultiDatasourceMybatisApplicationTests;
import com.xkcoding.multi.datasource.mybatis.model.User;
import com.xkcoding.multi.datasource.mybatis.service.UserService;
import lombok.extern.slf4j.Slf4j;
import org.junit.Test;
import org.springframework.beans.factory.annotation.Autowired;

import java.util.List;

/**
* <p>
* 测试主从数据源
* </p>
*
* @package: com.xkcoding.multi.datasource.mybatis.service.impl
* @description: 测试主从数据源
* @author: yangkai.shen
* @date: Created in 2019-01-21 14:45
* @copyright: Copyright (c) 2019
* @version: V1.0
* @modified: yangkai.shen
*/
@Slf4j
public class UserServiceImplTest extends SpringBootDemoMultiDatasourceMybatisApplicationTests {
@Autowired
private UserService userService;

/**
* 主从库添加
*/
@Test
public void addUser() {
User userMaster = User.builder().name("主库添加").age(20).build();
userService.addUser(userMaster);

User userSlave = User.builder().name("从库添加").age(20).build();
userService.save(userSlave);
}

/**
* 从库查询
*/
@Test
public void testListUser() {
List<User> list = userService.list(new QueryWrapper<>());
log.info("【list】= {}", JSONUtil.toJsonStr(list));
}
}

Loading…
Cancel
Save