1.1、Maven配置SpringBoot是一个大的依赖管理,他主动的去整合了其他厉害的框架,解决了jar间不兼容出现冲突的问题,并且有自动装配的特性,很多东西不要我们去配置了,他提供了默认的方案,如需个人修改,在他对外暴露的application.yaml中简单修改即可!
1.2、Yaml配置4.0.0 org.springframework.boot spring-boot-starter-parent 2.1.3.RELEASE com.example mall_01 0.0.1-SNAPSHOT mall_01 mall_01 1.8 1.2.10 1.1.10 1.3.3 8.0.27 2.7.0 org.springframework.boot spring-boot-starter-web org.springframework.boot spring-boot-starter-actuator org.springframework.boot spring-boot-starter-aop org.springframework.boot spring-boot-starter-test test com.github.pagehelper pagehelper-spring-boot-starter ${pagehelper-version} com.alibaba druid-spring-boot-starter ${druid-version} org.mybatis.generator mybatis-generator-core ${mybatis-generator-version} mysql mysql-connector-java ${mysql-version} io.springfox springfox-swagger2 ${swagger-version} io.springfox springfox-swagger-ui ${swagger-version} org.projectlombok lombok org.springframework.boot spring-boot-maven-plugin org.projectlombok lombok
server:
port: 8080
spring:
datasource:
url: jdbc:mysql://127.0.0.1:3306/mall-wnx-1?useUnicode=true&characterEncoding=utf-8&serverTimezone=Asia/Shanghai
username: root
password: root
mybatis:
mapper-locations:
- classpath:mapper/*.xml
- classpath*:commapper
@Configuration
@MapperScan("com.wnx.mall.mbg.mapper")
public class MyBatisConfig {
}
3、整合MyBatisGenerator
3.1、两个配置文件
- generator.properties
指明生成的数据源在哪?其内容如下:
jdbc.driverClass=com.mysql.cj.jdbc.Driver jdbc.connectionURL=jdbc:mysql://127.0.0.1:3306/mall-wnx-1?useUnicode=true&characterEncoding=utf-8&serverTimezone=Asia/Shanghai jdbc.userId=root jdbc.password=root
- generatorConfig.xml
指明生成的规则为何?其内容如下:
3.2、注释生成规则类
package com.wnx.mall.mbg;
import org.mybatis.generator.api.IntrospectedColumn;
import org.mybatis.generator.api.IntrospectedTable;
import org.mybatis.generator.api.dom.java.CompilationUnit;
import org.mybatis.generator.api.dom.java.Field;
import org.mybatis.generator.api.dom.java.FullyQualifiedJavaType;
import org.mybatis.generator.internal.DefaultCommentGenerator;
import org.mybatis.generator.internal.util.StringUtility;
import java.util.Properties;
public class CommentGenerator extends DefaultCommentGenerator {
private boolean addRemarkComments = false;
private static final String EXAMPLE_SUFFIX="Example";
private static final String API_MODEL_PROPERTY_FULL_CLASS_NAME="io.swagger.annotations.ApiModelProperty";
@Override
public void addConfigurationProperties(Properties properties) {
super.addConfigurationProperties(properties);
this.addRemarkComments = StringUtility.isTrue(properties.getProperty("addRemarkComments"));
}
@Override
public void addFieldComment(Field field, IntrospectedTable introspectedTable,
IntrospectedColumn introspectedColumn) {
String remarks = introspectedColumn.getRemarks();
//根据参数和备注信息判断是否添加备注信息
if(addRemarkComments&&StringUtility.stringHasValue(remarks)){
// addFieldJavaDoc(field, remarks);
//数据库中特殊字符需要转义
if(remarks.contains(""")){
remarks = remarks.replace(""","'");
}
//给model的字段添加swagger注解
field.addJavaDocLine("@ApiModelProperty(value = ""+remarks+"")");
}
}
private void addFieldJavaDoc(Field field, String remarks) {
//文档注释开始
field.addJavaDocLine("");
}
@Override
public void addJavaFileComment(CompilationUnit compilationUnit) {
super.addJavaFileComment(compilationUnit);
//只在model中添加swagger注解类的导入
if(!compilationUnit.isJavaInterface()&&!compilationUnit.getType().getFullyQualifiedName().contains(EXAMPLE_SUFFIX)){
compilationUnit.addimportedType(new FullyQualifiedJavaType(API_MODEL_PROPERTY_FULL_CLASS_NAME));
}
}
}
3.3、生产MBG代码的类
package com.wnx.mall.mbg;
import org.mybatis.generator.api.MyBatisGenerator;
import org.mybatis.generator.config.Configuration;
import org.mybatis.generator.config.xml.ConfigurationParser;
import org.mybatis.generator.internal.DefaultShellCallback;
import java.io.InputStream;
import java.util.ArrayList;
import java.util.List;
public class Generator {
public static void main(String[] args) throws Exception {
//MBG 执行过程中的警告信息
List warnings = new ArrayList();
//当生成的代码重复时,覆盖原代码
boolean overwrite = true;
//读取我们的 MBG 配置文件
InputStream is = Generator.class.getResourceAsStream("/generatorConfig.xml");
ConfigurationParser cp = new ConfigurationParser(warnings);
Configuration config = cp.parseConfiguration(is);
is.close();
DefaultShellCallback callback = new DefaultShellCallback(overwrite);
//创建 MBG
MyBatisGenerator myBatisGenerator = new MyBatisGenerator(config, callback, warnings);
//执行生成代码
myBatisGenerator.generate(null);
//输出警告信息
for (String warning : warnings) {
System.out.println(warning);
}
}
}
4、整合Swagger
4.1、配置类Swagger是一个优秀的RESTAPI接口调试工具,整合了他有利于我们前后端对接,后端进行接口测试!
package com.wnx.mall.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;
@Configuration
@EnableSwagger2
public class Swagger2Config {
@Bean
public Docket createRestApi(){
return new Docket(documentationType.SWAGGER_2)
.apiInfo(apiInfo())
.select()
//为当前包下controller生成API文档
.apis(RequestHandlerSelectors.basePackage("com.wnx.mall.controller"))
//为有@Api注解的Controller生成API文档
// .apis(RequestHandlerSelectors.withClassAnnotation(Api.class))
//为有@ApiOperation注解的方法生成API文档
// .apis(RequestHandlerSelectors.withMethodAnnotation(ApiOperation.class))
.paths(PathSelectors.any())
.build();
}
private ApiInfo apiInfo() {
return new ApiInfoBuilder()
.title("SwaggerUI演示")
.description("mall项目")
.contact("wangnaixing")
.version("1.0")
.build();
}
}
4.2、使用
@Api(tags = "PmsBrandController",description = "品牌管理") //Controller类
@ApiOperation("新增品牌") //Controller方法
@ApiModelProperty(value = "首字母") //POJO模型实体
findByPage(@RequestParam(value = "pageNum",defaultValue = "1") @ApiParam("页码") Integer pageNum,
@RequestParam(value = "pageSize",defaultValue = "5") @ApiParam("每页大小") Integer pageSize) //请求参数
5、源码下载
可在我的资源处下载!



