SpringBoot+MyBatis-Plus+Swagger
前言
提示:以下是本篇文章正文内容,下面案例可供参考
1. 新建springBoot项目
打开idea选择这个,注意jdk版本,下一步  填上包名项目名,选好jdk版本,下一步 
象征性的选择一个web(根据自己的需求选择),下一步 
创建完成后习惯性的run一下,看看能不能跑一起,一般情况都能跑起来滴~很明显我的没啥问题 
2. 配置一下application.properties
没啥,就一个数据库配置和端口
server.port= 8989
spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver
spring.datasource.url=jdbc:mysql://127.0.0.1:3306/student?characterEncoding=utf-8
spring.datasource.username=root
spring.datasource.password=123456
3.在pom文件里面加上需要的依赖
这里不只是Swagger和MyBatis-plus的依赖
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<scope>runtime</scope>
</dependency>
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<optional>true</optional>
</dependency>
<dependency>
<groupId>com.baomidou</groupId>
<artifactId>mybatis-plus-boot-starter</artifactId>
<version>3.1.1</version>
</dependency>
<!--添加 代码生成器 依赖-->
<dependency>
<groupId>com.baomidou</groupId>
<artifactId>mybatis-plus-generator</artifactId>
<version>3.1.1</version>
</dependency>
<!-- freemarker 模板引擎 -->
<dependency>
<groupId>org.freemarker</groupId>
<artifactId>freemarker</artifactId>
<version>2.3.23</version>
</dependency>
<!--Swagger2相关的依赖 -->
<dependency>
<groupId>io.springfox</groupId>
<artifactId>springfox-swagger2</artifactId>
<version>2.9.2</version>
</dependency>
<dependency>
<groupId>io.springfox</groupId>
<artifactId>springfox-swagger-ui</artifactId>
<version>2.9.2</version>
</dependency>
4.MyBatis-plus生成代码的类CodeGenerator
package com.clouds.orange.config;
import com.baomidou.mybatisplus.annotation.DbType;
import com.baomidou.mybatisplus.core.exceptions.MybatisPlusException;
import com.baomidou.mybatisplus.core.toolkit.StringPool;
import com.baomidou.mybatisplus.core.toolkit.StringUtils;
import com.baomidou.mybatisplus.generator.AutoGenerator;
import com.baomidou.mybatisplus.generator.InjectionConfig;
import com.baomidou.mybatisplus.generator.config.*;
import com.baomidou.mybatisplus.generator.config.converts.MySqlTypeConvert;
import com.baomidou.mybatisplus.generator.config.po.TableInfo;
import com.baomidou.mybatisplus.generator.config.rules.NamingStrategy;
import com.baomidou.mybatisplus.generator.engine.FreemarkerTemplateEngine;
import java.util.ArrayList;
import java.util.List;
import java.util.Scanner;
public class CodeGenerator {
public static String scanner(String tip) {
Scanner scanner = new Scanner(System.in);
StringBuilder help = new StringBuilder();
help.append("请输入" + tip + ":");
System.out.println(help.toString());
if (scanner.hasNext()) {
String ipt = scanner.next();
if (StringUtils.isNotEmpty(ipt)) {
return ipt;
}
}
throw new MybatisPlusException("请输入正确的" + tip + "!");
}
public static void main(String[] args) {
AutoGenerator mpg = new AutoGenerator();
GlobalConfig globalConfig = new GlobalConfig();
String projectPath = System.getProperty("user.dir");
globalConfig.setOutputDir(projectPath + "/src/main/java");
globalConfig.setAuthor("soul");
globalConfig.setFileOverride(true);
globalConfig.setOpen(false);
mpg.setGlobalConfig(globalConfig);
DataSourceConfig dataSourceConfig = new DataSourceConfig();
dataSourceConfig.setDbType(DbType.MYSQL);
dataSourceConfig.setTypeConvert(new MySqlTypeConvert());
dataSourceConfig.setUrl("jdbc:mysql://127.0.0.1:3306/student?characterEncoding=utf-8&serverTimezone=GMT%2B8&useSSL=false");
dataSourceConfig.setDriverName("com.mysql.jdbc.Driver");
dataSourceConfig.setUsername("root");
dataSourceConfig.setPassword("123456");
mpg.setDataSource(dataSourceConfig);
PackageConfig pc = new PackageConfig();
pc.setModuleName(scanner("模块名"));
pc.setParent("com.clouds.orange");
mpg.setPackageInfo(pc);
InjectionConfig cfg = new InjectionConfig() {
@Override
public void initMap() {
}
};
String templatePath = "/templates/mapper.xml.ftl";
List<FileOutConfig> focList = new ArrayList<>();
focList.add(new FileOutConfig(templatePath) {
@Override
public String outputFile(TableInfo tableInfo) {
return projectPath + "/src/main/resources/mapper/"+ pc.getModuleName()
+ "/" + tableInfo.getEntityName() + "Mapper" + StringPool.DOT_XML;
}
});
cfg.setFileOutConfigList(focList);
mpg.setCfg(cfg);
TemplateConfig templateConfig = new TemplateConfig();
templateConfig.setXml(null);
mpg.setTemplate(templateConfig);
StrategyConfig strategy = new StrategyConfig();
strategy.setNaming(NamingStrategy.underline_to_camel);
strategy.setColumnNaming(NamingStrategy.underline_to_camel);
strategy.setInclude(scanner("请输入表名,并用,隔开").split(","));
strategy.setEntityLombokModel(true);
strategy.setRestControllerStyle(true);
strategy.setSuperEntityColumns("id");
strategy.setControllerMappingHyphenStyle(true);
strategy.setTablePrefix(pc.getModuleName() + "_");
mpg.setStrategy(strategy);
mpg.setTemplateEngine(new FreemarkerTemplateEngine());
mpg.execute();
}
}
配置好数据源运行CodeGenerator中的main方法,按照要求输入表名 
 生成的项目结构,可以先跑一下。跑不动? 
跑不动很正常的,因为在启动类里面少了个玩意儿@MapperScan(“com.clouds.silver.mapper”) 
5.丝袜哥的SwaggerConfig
package com.clouds.silver.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.Contact;
import springfox.documentation.spi.DocumentationType;
import springfox.documentation.spring.web.plugins.Docket;
import springfox.documentation.swagger2.annotations.EnableSwagger2;
@Configuration
@EnableSwagger2
public class SwaggerConfig {
@Bean
public Docket createRestApi(){
return new Docket(DocumentationType.SWAGGER_2)
.pathMapping("/")
.select()
.apis(RequestHandlerSelectors.basePackage("com.clouds.silver.controller"))
.paths(PathSelectors.any())
.build().apiInfo(new ApiInfoBuilder()
.title("SpringBoot整合Swagger")
.description("SpringBoot整合Swagger,详细信息>>>>>>")
.contact(new Contact("银子","www.silver.com","silver@mial.com"))
.license("The Apache License")
.licenseUrl("https://www.baidu.com")
.build()
);
}
}
跑一下,看看是否丝滑~运行以浏览器输入:http://localhost:8989/swagger-ui.html,端口自己的写自己的。向下面这个界面就成了。

6.加上丝袜哥的注解,写两个接口试试
mapper就自动生成的,想要了解更多关于myBatis-plus的运用可以看官网:https://mp.baomidou.com/ 
6.1 UserController
在类上加注解:@Api(tags = “用户”) 在方法上加注解:@ApiOperation(“获取全部用户”)
package com.clouds.silver.controller;
import com.clouds.silver.entity.User;
import com.clouds.silver.service.IUserService;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;
import javax.annotation.Resource;
import java.util.List;
@RestController
@RequestMapping("/silver/user")
@Api(tags = "用户")
public class UserController {
@Resource
private IUserService userService;
@ApiOperation("获取全部用户")
@GetMapping("getUserAll")
public List<User> getUserAll(){
return userService.list();
}
@ApiOperation("根据用户名查询")
@GetMapping("getUserByName")
public List<User> getUserByName(@RequestParam("name") String name){
return userService.getUserByName(name);
}
}
6.2 IUserService和UserServiceImpl
package com.clouds.silver.service;
import com.clouds.silver.entity.User;
import com.baomidou.mybatisplus.extension.service.IService;
import java.util.List;
public interface IUserService extends IService<User> {
List<User> getUserByName(String name);
}
package com.clouds.silver.service.impl;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.clouds.silver.entity.User;
import com.clouds.silver.mapper.UserMapper;
import com.clouds.silver.service.IUserService;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import org.springframework.stereotype.Service;
import javax.annotation.Resource;
import java.util.List;
@Service
public class UserServiceImpl extends ServiceImpl<UserMapper, User> implements IUserService {
@Resource
private UserMapper userMapper;
@Override
public List<User> getUserByName(String name) {
QueryWrapper<User> queryWrapperUser = new QueryWrapper<User>();
queryWrapperUser.like("name",name);
return userMapper.selectList(queryWrapperUser);
}
}
6.3 User实体类
在实体类上加上swagger的注解:@ApiModel
package com.clouds.silver.entity;
import java.time.LocalDateTime;
import java.io.Serializable;
import io.swagger.annotations.ApiModel;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.experimental.Accessors;
@Data
@EqualsAndHashCode(callSuper = false)
@Accessors(chain = true)
@ApiModel
public class User implements Serializable {
private static final long serialVersionUID = 1L;
private String name;
private Integer age;
private String email;
private Long managerId;
private LocalDateTime createTime;
}
7.瞅瞅swagger-ui
运行项目,访问http://localhost:8989/swagger-ui.html,看到如下界面,就真的成了 
接口可以复制到浏览器试试,我随便测了一下,还是能查询到的 
总结
上面的案例到我的资源里面找找 
|