入门案例下载链接
项目目录
基础pom 文件
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.4.5</version>
<relativePath/> <!-- lookup parent from repository -->
</parent>
<groupId>com.blackjoker</groupId>
<artifactId>mybatis-plus-dynamic</artifactId>
<version>0.0.1-SNAPSHOT</version>
<name>mybatis-plus-dynamic</name>
<description>Demo project for Spring Boot</description>
<properties>
<java.version>1.8</java.version>
</properties>
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-devtools</artifactId>
<scope>runtime</scope>
<optional>true</optional>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<!--mysql-->
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>8.0.20</version>
<scope>runtime</scope>
</dependency>
<dependency>
<groupId>io.springfox</groupId>
<artifactId>springfox-swagger2</artifactId>
<version>2.4.0</version>
</dependency>
<dependency>
<groupId>io.springfox</groupId>
<artifactId>springfox-swagger2</artifactId>
<version>2.6.1</version>
</dependency>
<dependency>
<groupId>io.springfox</groupId>
<artifactId>springfox-swagger-ui</artifactId>
<version>2.6.1</version>
</dependency>
<dependency>
<groupId>com.baomidou</groupId>
<artifactId>dynamic-datasource-spring-boot-starter</artifactId>
<version>3.3.1</version>
</dependency>
<dependency>
<groupId>com.baomidou</groupId>
<artifactId>mybatis-plus</artifactId>
<version>3.4.2</version>
</dependency>
<!-- https://mvnrepository.com/artifact/com.baomidou/mybatis-plus-boot-starter -->
<dependency>
<groupId>com.baomidou</groupId>
<artifactId>mybatis-plus-boot-starter</artifactId>
<version>3.4.1</version>
</dependency>
<!-- https://mvnrepository.com/artifact/org.projectlombok/lombok -->
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<version>1.18.12</version>
<scope>provided</scope>
</dependency>
</dependencies>
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
</plugins>
</build>
</project>
config
package com.blackjoker.mybatisplusdynamic.config;
import org.mybatis.spring.annotation.MapperScan;
import org.springframework.context.annotation.Configuration;
/**
* @author miemie
* @since 2018-08-10
*/
@Configuration
@MapperScan("com.blackjoker.mybatisplusdynamic.mapper")
public class MybatisPlusConfig {
}
swagger 配置文件
package com.blackjoker.mybatisplusdynamic.config;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import springfox.documentation.builders.ApiInfoBuilder;
import springfox.documentation.builders.PathSelectors;
import springfox.documentation.builders.RequestHandlerSelectors;
import springfox.documentation.service.ApiInfo;
import springfox.documentation.spi.DocumentationType;
import springfox.documentation.spring.web.plugins.Docket;
import springfox.documentation.swagger2.annotations.EnableSwagger2;
import java.util.function.Predicate;
import static springfox.documentation.builders.PathSelectors.regex;
/**
* @author itguang
* @create 2018-01-04 13:36
**/
@Configuration
@EnableSwagger2
public class SwaggerConfig{
@Bean
public Docket createRestApi() {
return new Docket(DocumentationType.SWAGGER_2)
.apiInfo(apiInfo())
.select()
.apis(RequestHandlerSelectors.basePackage("com.blackjoker.mybatisplusdynamic.controller"))
.paths(PathSelectors.any())
.build();
}
private ApiInfo apiInfo() {
return new ApiInfoBuilder()
.title("springboot利用swagger构建api文档")
.description("简单优雅的restfun风格,http://blog.youkuaiyun.com/forezp")
.termsOfServiceUrl("http://blog.youkuaiyun.com/forezp")
.version("1.0")
.build();
}
}
controller
package com.blackjoker.mybatisplusdynamic.controller;
import com.blackjoker.mybatisplusdynamic.entity.User;
import com.blackjoker.mybatisplusdynamic.mapper.User1Mapper;
import com.blackjoker.mybatisplusdynamic.mapper.UserMapper;
import io.swagger.annotations.Api;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.RestController;
import javax.annotation.Resource;
import static org.springframework.util.MimeTypeUtils.APPLICATION_JSON_VALUE;
/**
* @author
* @create 2021-04-18 23:36
**/
@RestController
@RequestMapping(value = "/user", produces = APPLICATION_JSON_VALUE) //配置返回值 application/json
public class UserController {
@Resource
private UserMapper userMapper;
@Resource
private User1Mapper user1Mapper;
@RequestMapping(method = RequestMethod.GET, value = "/api/list1")
public String sayHello() {
User user1 = user1Mapper.selectById(1);
System.out.println(user1.toString());
return user1.toString();
}
@RequestMapping(method = RequestMethod.GET, value = "/api/list")
public String addUser() {
User user1 = userMapper.selectById(1);
System.out.println(user1.toString());
return user1.toString();
}
}
entity
package com.blackjoker.mybatisplusdynamic.entity;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableName;
import lombok.Data;
import lombok.experimental.Accessors;
/**
* <p>
* 用户实体对应表 user
* </p>
*
* @author hubin
* @since 2018-08-11
*/
@Data
@TableName("user")
public class User {
private Long id;
private String name;
private Integer age;
private String email;
@TableField(exist = false)
private String ignoreColumn = "ignoreColumn";
@TableField(exist = false)
private Integer count;
}
Mapper
package com.blackjoker.mybatisplusdynamic.mapper;
import com.baomidou.dynamic.datasource.annotation.DS;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.blackjoker.mybatisplusdynamic.entity.User;
import org.mapstruct.Mapper;
@Mapper
@DS("slave_1")
public interface User1Mapper extends BaseMapper<User> {
}
package com.blackjoker.mybatisplusdynamic.mapper;
import com.baomidou.dynamic.datasource.annotation.DS;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.blackjoker.mybatisplusdynamic.entity.User;
import org.mapstruct.Mapper;
@Mapper
@DS("master")
public interface UserMapper extends BaseMapper<User> {
}
application 配置类
这个需要替换成自己的数据库配置
spring:
datasource:
dynamic:
primary: master #设置默认的数据源或者数据源组,默认值即为master
lazy: false #默认立即初始化数据源,true则支持在需要建立连接时再初始化数据源
strict: false #严格匹配数据源,默认false. true未匹配到指定数据源时抛异常,false使用默认数据源
datasource:
master:
url: jdbc:mysql://localhost:3306/mybatis
username: root
password: 1234
driver-class-name: com.mysql.jdbc.Driver # 3.2.0开始支持SPI可省略此配置
slave_1:
url: jdbc:mysql://localhost:3306/mybatis2
username: root
password: 123456
driver-class-name: com.mysql.jdbc.Driver
#enable swagger
swagger:
enable: true
程序入库
package com.blackjoker.mybatisplusdynamic;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
@SpringBootApplication
public class MybatisPlusDynamicApplication {
public static void main(String[] args) {
SpringApplication.run(MybatisPlusDynamicApplication.class, args);
}
}