目錄
MyBatis-Plus
https://mp.baomidou.com/
相關依賴
Release
#Spring Boot
Maven:
<dependency>
<groupId>com.baomidou</groupId>
<artifactId>mybatis-plus-boot-starter</artifactId>
<version>3.3.1.tmp</version>
</dependency>
添加 代碼生成器 依賴
<dependency>
<groupId>com.baomidou</groupId>
<artifactId>mybatis-plus-generator</artifactId>
<version>3.3.1.tmp</version>
</dependency>
添加 mysql 依賴
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>5.1.47</version>
</dependency>
添加 模板引擎 依賴,MyBatis-Plus 支持 Velocity(默認)、Freemarker、Beetl,用戶可以選擇自己熟悉的模板引擎,如果都不滿足您的要求,可以採用自定義模板引擎。這邊使用Freemarker。
<dependency>
<groupId>org.freemarker</groupId>
<artifactId>freemarker</artifactId>
<version>2.3.29</version>
</dependency>
添加 Swagger 依賴
<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>
CodeGenerator.java代碼生成器的配置
- 數據庫相關信息,數據庫名、用戶名和密碼需要做相應的修改
// 數據源配置
DataSourceConfig dsc = new DataSourceConfig();
dsc.setUrl("jdbc:mysql://localhost:3306/api-runner?useUnicode=true&useSSL=false&characterEncoding=utf8");
dsc.setDriverName("com.mysql.jdbc.Driver");
dsc.setUsername("root");
dsc.setPassword("root");
dsc.setDbType(DbType.MYSQL);
mpg.setDataSource(dsc);
- 包配置,父包在哪裏?需要做相應的修改
// 包配置
PackageConfig pc = new PackageConfig();
pc.setParent("com.one");
// pc.setModuleName("模塊名");
pc.setController("controller");
pc.setService("service");
pc.setMapper("mapper");
pc.setEntity("pojo");
mpg.setPackageInfo(pc);
- 操作數據庫哪些表?需要做相應的修改
可以生成部分表的代碼,只需要把要生成代碼的表名填寫在這裏就可以了。
strategy.setInclude("user","test_rule","test_report","suite","project","cases","case_param_value","api_request_param","api_classification","api");//需要生成的表名,多個英文逗號
- 生成實體時去掉表前綴
strategy.setTablePrefix(pc.getModuleName() + "_"); //生成實體時去掉表前綴
- 需要lombok註解
strategy.setEntityLombokModel(true); // lombok 模型 @Accessors(chain = true) setter鏈式操作
- mapper文件
在resources下面,生成mapper文件,xml文件,後面不用xml文件,用註解代替xml
public String outputFile(TableInfo tableInfo) {
// 自定義輸出文件名 , 如果你 Entity 設置了前後綴、此處注意 xml 的名稱會跟着發生變化!!
return projectPath + "/src/main/resources/mapper/"
+ tableInfo.getEntityName() + "Mapper" + StringPool.DOT_XML;
}
- 運行CodeGenerator.java文件
執行完成後,提示文件生成完成!!!
瞬間生成的文件如下圖所示:
需要支持lombok:
Eclipse安裝lombok插件,可參閱:https://blog.csdn.net/zflovecf/article/details/80178679
Swagger2
需要支持Swagger2:
http://localhost:8080/lemon/swagger-ui.html
- springboot集成
- 配置類
- 常用註解
SwaggerConfiguration.java的配置
- 創建package:com.one.swagger
- 加入SwaggerConfiguration.java文件
- 修改
.apis(RequestHandlerSelectors.basePackage("com.one.controller"))
- 以及修改
return new ApiInfoBuilder()
//文檔標題
.title("swagger接口文檔")
//聯繫人
.contact(new Contact("annie",null,"[email protected]"))
//文檔描述
.description("測試平臺接口文檔")
//.termsOfServiceUrl("https://github.com/linlinjava/litemall")
//版本
.version("1.0")
.build();
- 在啓動類DemoApplication.java的@SpringBootApplication註解下面加入如下註解:
@EnableSwagger2
Result.java的編碼
- 創建package:com.one.common
- 新增Result.java類
package com.one.common;
import lombok.Data;
@Data
public class Result {
private String status; //1 0
private Object data;
private String message;
public Result(String status, Object data) {
super();
this.status = status;
this.data = data;
}
public Result(String status, String message) {
super();
this.status = status;
this.message = message;
}
}
啓動類Starter.java的編碼
需要新增如下3個註解:
@EnableSwagger2
@MapperScan(basePackages=“com.one.mapper”)
@EnableTransactionManagement
package com.one;
import org.mybatis.spring.annotation.MapperScan;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.transaction.annotation.EnableTransactionManagement;
import springfox.documentation.swagger2.annotations.EnableSwagger2;
@SpringBootApplication
@EnableSwagger2
@MapperScan(basePackages="com.one.mapper")
@EnableTransactionManagement
public class Starter {
public static void main(String[] args) {
SpringApplication.run(Starter.class, args);
}
}
事務管理
查詢可以沒有事務,查詢默認做成只讀事務。
增C刪D改U都需要進行事務管理,讓操作落地。
啓動器類需要增加如下註解:
@EnableTransactionManagement
‘url’ attribute is not specified問題
需要在application.yml裏面增加如下數據庫配置:
spring:
datasource:
driver-class-name: com.mysql.jdbc.Driver
url: jdbc:mysql://localhost:3306/api-runner
username: root
password: root
注意冒號和值之間要有空格,沒有空格是不行的。
GET請求改成POST請求
需要將註解從
@RequestMapping("/register")
修改爲
@PostMapping("/register")
用戶註冊的編碼
對com.one.controller中
UserController.java進行修改
package com.one.controller;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.CrossOrigin;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import com.one.common.Result;
import com.one.pojo.User;
import com.one.service.UserService;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
/**
* <p>
* 前端控制器
* </p>
*
* @author annie
* @since 2020-02-16
*/
@RestController
@RequestMapping("/user")
@CrossOrigin
@Api("用戶模塊")
public class UserController {
@Autowired
private UserService userService;
//註冊
@PostMapping("/register")
@ApiOperation(value="註冊方法", httpMethod="POST")
public Result register(User user){
//調用業務層方法,插入到DB,統一處理異常
userService.save(user);
Result result = new Result("1","註冊成功");
return result;
}
}
Swagger接口文檔
上述代碼中,@Api(“用戶模塊”)和@ApiOperation(value=“註冊方法”, httpMethod=“POST”)都是用來生成接口文檔的
swagger接口文檔如下圖所示:
用戶註冊的請求參數:
用戶註冊的返回狀態:
可以通過右側的Try it out進行請求:
填寫參數後,點擊Execute按鈕執行。
響應結果,註冊成功: