企业级开发常用框架之一
mybatis-plus 学习地址 https://mp.baomidou.com/
swagger 学习地址 https://swagger.io/
lombok 学习地址 https://projectlombok.org/
1.项目搭建
1.1 创建一个springboot 项目
1.2 在pom.xml引入相关依赖
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<version>1.18.12</version>
<scope>provided</scope>
</dependency>
<!-- swagger2 -->
<dependency>
<groupId>io.springfox</groupId>
<artifactId>springfox-swagger2</artifactId>
<version>2.4.0</version>
</dependency>
<dependency>
<groupId>io.springfox</groupId>
<artifactId>springfox-swagger-ui</artifactId>
<version>2.4.0</version>
</dependency>
<!-- 数据库驱动包,我用的mysql8.0 -->
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<scope>runtime</scope>
<version>8.0.16</version>
</dependency>
<!-- mybatis plus 代码生成器 -->
<dependency>
<groupId>com.baomidou</groupId>
<artifactId>mybatis-plus-boot-starter</artifactId>
<version>3.2.0</version>
</dependency>
<dependency>
<groupId>com.baomidou</groupId>
<artifactId>mybatis-plus-generator</artifactId>
<version>3.2.0</version>
</dependency>
<dependency>
<groupId>org.freemarker</groupId>
<artifactId>freemarker</artifactId>
<version>2.3.28</version>
</dependency>
1.3 配置application.yml 文件
server:
port: 8081
servlet:
context-path: /
spring:
datasource:
driver-class-name: com.mysql.cj.jdbc.Driver
url: jdbc:mysql://127.0.0.1:3306/20200917?serverTimezone=Asia/Shanghai&useUnicode=true&characterEncoding=utf-8&zeroDateTimeBehavior=convertToNull&useSSL=false&allowPublicKeyRetrieval=true
username: root
password: root
jackson:
date-format: yyyy-MM-dd HH:mm:ss
time-zone: GMT+8
mybatis-plus:
mapper-locations: classpath*:mapper/**/*Mapper.xml
configuration:
map-underscore-to-camel-case: false
log-impl: org.apache.ibatis.logging.stdout.StdOutImpl
auto-mapping-behavior: full
global-config:
db-config:
logic-not-delete-value: 1
logic-delete-value: 0
2.小细节配置
2.1 lombok 引用依赖,还要下载插件这个是重点
介绍:Lombok是一种Java实用工具,可以帮助开发人员消除Java代码中冗长的代码,尤其是对简单Java对象(POJO),通过注解来实现。
2.2 实践操作
Lombok中常用注解:
1.@Getter 和 @Setter
给我自动添加对应的Getter和Setter 方法,该注解可以添加在属性头部,也可以添加在类头部
注意:静态属性不会产生对应的Getter和Setter 方法
final类型的属性只会产生Getter方法
2 @ToString
帮助我们自动生成一个toString方法
如果不想要某个字段出现在ToString方法中,那么可以通过exclude属性指定要排除的属性
@ToString(exclude = {"address","age"})
3.构造器注解
@NoArgsConstructor 无参的构造器
@RequiredArgsConstructor 添加必要的有参构造器 被@NonNull 修饰的成员变量和 final 修饰成员变量【未初始化】
@AllArgsConstructor 添加具有所有成员变量的构造器
4.@Data注解
@Data其实是一个集成了@Getter/@Setter +@ToString+@EqualsAndHashCode+@RequiredArgsConstructor 注解
5.@Builder注解
给我们提供一种对象链式调用的方式,会帮我们在POJO类中创建一个对应的内部类来实现该操作
2.3 swagger 实战
1.介绍
号称是世界上最流行的API框架
Restful Api 文档在线生成器 ==> Api文档与Api定义同步更新
直接运行,在线测试Api
支持多种语言【Java、PHP…】
2.建一个javaConfig类型 就可以直接访问
@Configuration
@EnableSwagger2 //放开Swagger的支持
public class SwaggerConfig {
}
3.访问地址 http://localhost:8081/swagger-ui.html
4.效果展示
5.常用注解
@Api:作用在类头部,描述类
@ApiModel:在PO,VO中的类上,同样的是用来描述Bean信息的
@ApiModelProperty:添加在Bean的属性中,描述给成员变量添加描述
@ApiParam:添加对方法中参数的描述
@ApiOperation:添加对方法功能的描述
@ApiIgnore:忽略方法或类型
2.4 Mybatis-plus 逆袭工程
/**
* @Des 自动生成mybatisplus的相关代码
* @Author stybb
* @Date 2021/5/20 12:32
*/
public class GeneratorCodeConfig {
public static String scanner(String tip){
Scanner scanner=new Scanner(System.in);
StringBuffer stringBuffer=new StringBuffer();
stringBuffer.append("请输入"+tip+": ");
System.out.println(stringBuffer.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 gc=new GlobalConfig();
String projectPath =System.getProperty("user.dir");
gc.setOutputDir(projectPath+"/src/main/java");
gc.setAuthor("astupidcoder");
gc.setOpen(false);
//实体属性 Swagger2 注解
gc.setSwagger2(false);
mpg.setGlobalConfig(gc);
//数据源配置
DataSourceConfig dsc=new DataSourceConfig();
dsc.setUrl("jdbc:mysql://127.0.0.1:3306/20200917?serverTimezone=Asia/Shanghai&useUnicode=true&characterEncoding=utf-8&zeroDateTimeBehavior=convertToNull&useSSL=false&allowPublicKeyRetrieval=true");
dsc.setDriverName("com.mysql.cj.jdbc.Driver");
dsc.setUsername("root");
dsc.setPassword("root");
mpg.setDataSource(dsc);
//包设置
PackageConfig pc=new PackageConfig();
pc.setParent("com.example");
pc.setEntity("pojo");
pc.setMapper("mapper");
pc.setService("service");
pc.setServiceImpl("service.impl");
mpg.setPackageInfo(pc);
//配置模板
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.setSuperEntityClass("com.baomidou.mybatisplus.extension.activerecord.Model");
strategy.setEntityLombokModel(true);
strategy.setRestControllerStyle(true);
strategy.setInclude(scanner("表明,多个英文逗号分隔").split(","));
strategy.setControllerMappingHyphenStyle(true);
strategy.setTablePrefix(pc.getModuleName()+"_");
mpg.setStrategy(strategy);
mpg.setTemplateEngine(new FreemarkerTemplateEngine());
mpg.execute();
}
}