代碼生成器
pom.xml文件中
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd"><modelVersion>4.0.0</modelVersion><groupId>com.yase</groupId><artifactId>spmp</artifactId><version>0.0.1-SNAPSHOT</version><name>spmp</name><description>spmp</description><properties><java.version>1.8</java.version><project.build.sourceEncoding>UTF-8</project.build.sourceEncoding><project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding><spring-boot.version>2.7.6</spring-boot.version></properties><dependencies><!--模板引擎--><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-freemarker</artifactId></dependency>
<!-- web--><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId></dependency>
<!--熱部署工具--><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-devtools</artifactId><scope>runtime</scope><optional>true</optional></dependency>
<!-- mysql--><dependency><groupId>com.mysql</groupId><artifactId>mysql-connector-j</artifactId><scope>runtime</scope></dependency>
<!-- lombok--><dependency><groupId>org.projectlombok</groupId><artifactId>lombok</artifactId><optional>true</optional></dependency>
<!-- test--><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-test</artifactId><scope>test</scope></dependency>
<!-- 整合swagger--><dependency><groupId>io.springfox</groupId><artifactId>springfox-boot-starter</artifactId><version>3.0.0</version></dependency>
<!-- mybatisplus依賴--><dependency><groupId>com.baomidou</groupId><artifactId>mybatis-plus-boot-starter</artifactId><version>3.5.1</version></dependency>
<!-- mybatisplus代碼生成器依賴--><dependency><groupId>com.baomidou</groupId><artifactId>mybatis-plus-generator</artifactId><version>3.5.2</version></dependency></dependencies><dependencyManagement><dependencies><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-dependencies</artifactId><version>${spring-boot.version}</version><type>pom</type><scope>import</scope></dependency></dependencies></dependencyManagement><build><plugins><plugin><groupId>org.apache.maven.plugins</groupId><artifactId>maven-compiler-plugin</artifactId><version>3.8.1</version><configuration><source>1.8</source><target>1.8</target><encoding>UTF-8</encoding></configuration></plugin><plugin><groupId>org.springframework.boot</groupId><artifactId>spring-boot-maven-plugin</artifactId><version>${spring-boot.version}</version><configuration><mainClass>com.yase.spmp.SpmpApplication</mainClass><skip>true</skip></configuration><executions><execution><id>repackage</id><goals><goal>repackage</goal></goals></execution></executions></plugin></plugins></build></project>
在Test文件夾中創建測試類
package com.yase.spmp;import com.baomidou.mybatisplus.generator.FastAutoGenerator;
import com.baomidou.mybatisplus.generator.config.rules.DbColumnType;
import com.baomidou.mybatisplus.generator.engine.FreemarkerTemplateEngine;
import org.junit.jupiter.api.Test;
import org.springframework.boot.test.context.SpringBootTest;//此處代碼可以自動生成系列文件
@SpringBootTest
public class TestGenerator {@Testpublic void testGenerator(){FastAutoGenerator.create("jdbc:mysql://localhost:3306/mybatis?serverTimezone=GMT%2B8", "root", "root").globalConfig(builder -> {builder.author("jiangnan") // 設置作者.enableSwagger() // 開啟 swagger 模式.fileOverride() // 覆蓋已生成文件.outputDir(".\\src\\main\\java"); // 指定輸出目錄})
//不了解忽略
// .dataSourceConfig(builder -> builder.typeConvertHandler((globalConfig, typeRegistry, metaInfo) -> {
// int typeCode = metaInfo.getJdbcType().TYPE_CODE;
// if (typeCode == Types.SMALLINT) {
// // 自定義類型轉換
// return DbColumnType.INTEGER;
// }
// return typeRegistry.getColumnType(metaInfo);
//
// })).packageConfig(builder -> {builder.parent("com.yase") // 設置父包名.moduleName("system"); // 設置父包模塊名
// .pathInfo(Collections.singletonMap(OutputFile.xml, "D://")); // 設置mapperXml生成路徑,此處可以使用默認的}).strategyConfig(builder -> {builder.addInclude("i_emp") // 設置需要生成的表名.addTablePrefix("i_", "c_"); // 設置過濾表前綴}).templateEngine(new FreemarkerTemplateEngine()) // 使用Freemarker引擎模板,默認的是Velocity引擎模板.execute();}
}
導入swagger3的配置類
package com.yase.system.config;import io.swagger.annotations.ApiOperation;
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.service.Contact;
import springfox.documentation.spi.DocumentationType;
import springfox.documentation.spring.web.plugins.Docket;@Configuration
public class Swagger3Config {/*** 創建API應用* apiInfo() 增加API相關信息* 通過select()函數返回一個ApiSelectorBuilder實例,用來控制哪些接口暴露給Swagger來展現,* 本例采用指定掃描的包路徑來定義指定要建立API的目錄。** @return*/@Beanpublic Docket restApi() {return new Docket(DocumentationType.OAS_30).apiInfo(apiInfo()).select().apis(RequestHandlerSelectors.withMethodAnnotation(ApiOperation.class)).paths(PathSelectors.any()).build();}//創建該API的基本信息(這些基本信息會展現在文檔頁面中)private ApiInfo apiInfo() {return new ApiInfoBuilder().title("title").description("https://baidu.com") .termsOfServiceUrl("https://baidu.com").contact(new Contact("dada", "https://baidu.com", "2391356197@qq.com")).build();}
}
創建狀態碼接口
package com.yase.system.util;public interface ResultCode {//前端element-uiInteger SUCCESS = 20000;Integer ERROR = 20001;
}
規定返回結果類
package com.yase.system.util;import lombok.Data;
import lombok.experimental.Accessors;
import java.util.HashMap;
import java.util.Map;//返回結果類
@Data
@Accessors(chain = true)
public class Result {//操作是否成功private Boolean isSuccess;//狀態碼private Integer code;//消息private String message;//返回數據private Map<String,Object> data;//操作成功public static Result success(){return new Result().setIsSuccess(true).setCode(ResultCode.SUCCESS).setMessage("操作成功").setData(new HashMap<>());}//操作失敗public static Result error(){return new Result().setIsSuccess(false).setCode(ResultCode.ERROR).setMessage("操作失敗").setData(new HashMap<>());}//用戶傳入數據public Result setData(HashMap<String,Object> data) {this.data = data;return this;}public Result setData(String key,Object value){this.data.put(key,value);return this;}
}
在control類創建相關功能
package com.yase.system.controller;import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.yase.system.entity.Emp;
import com.yase.system.service.IEmpService;
import com.yase.system.util.Result;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import io.swagger.models.auth.In;
import org.springframework.web.bind.annotation.*;
import org.springframework.stereotype.Controller;import javax.annotation.Resource;
import java.util.HashMap;
import java.util.List;/*** <p>* 前端控制器* </p>** @author jiangnan* @since 2024-05-14*/
@RestController
@RequestMapping("/system/emp")
@Api("管理信息")
public class EmpController {@Resourceprivate IEmpService service;//?@GetMapping("/{id}")@ApiOperation("按照id查詢數據數據")public Result selectOneData(@PathVariable Integer id){Emp byId = service.getById(id);return Result.success().setData("emp",byId);}//分頁,需要傳入當前的頁碼current和每頁顯示的大小size@GetMapping("/{current}/{size}")@ApiOperation("給定頁碼和每頁大小,顯示信息")public Result selectPage(@PathVariable Integer current,@PathVariable Integer size){//此處需要導入page的分頁配置類Page<Emp> page = new Page<>(current,size);//無需給page獲取返回對象service.page(page);return Result.success().setData("page",page);}@ApiOperation("查詢所有數據")@GetMappingpublic Result select(){List<Emp> list = service.list();/*兩種返回方式HashMap<String,Object> map = new HashMap<>();map.put("list",list);return Result.success().setData(map);*/return Result.success().setData("list",list);}@PostMapping@ApiOperation("保存數據")public Result save(@RequestBody Emp emp){//判斷返回的狀態,true返回成功,false返回errorboolean b = service.save(emp);return b?Result.success():Result.error();}@PutMapping@ApiOperation("更新數據")public Result update(@RequestBody Emp emp){return service.updateById(emp) ? Result.success():Result.error();}@DeleteMapping("/{id}")@ApiOperation("刪除數據")public Result delete(@PathVariable Integer id){return service.removeById(id) ? Result.success():Result.error();}}
最后在AppServer中添加掃描mapper,即可完成
@MapperScan(“com.yase.system.mapper”)