測試開發系列之——MyBatis-Plus&用戶註冊功能

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按鈕執行。
在這裏插入圖片描述
響應結果,註冊成功:
在這裏插入圖片描述

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章