🎶 文章简介:木字楠后台管理系统开发(2):SpringBoot项目代码生成以及基础接口测试
💡 创作目的:为了带大家完整的体验木字楠后台管理系统模版的开发流程
☀️ 今日天气:一场秋雨一场寒,天气越来越冷了
📝 每日一言:成熟不是人的心变老,是泪在打转还能微笑。
文章目录
- 🎈 1、导入数据库文件
- 🧨 2、配制文件中配制数据库信息
- ✨ 3、使用代码生成器快速生成代码
- 🎉 3-1、引入所需依赖信息
- 🎊 3-2、在测试目录中测试代码生成
- 🎃 3-3、Swagger接口管理引入
- 🎄 4、接口编写测试
- 🎋 4-1、本地接口测试
- 🎍 4-2、Swagger接口查看
- 🎎 5、主启动类改造
在进行代码生成之前,我们需要先配制数据库信息,否则会出现异常信息。
大家根据自身编码习惯选择使用 yml 文件还是 properties 文件

spring:application:name: MuZiNan-Template-Server# Database Configurationdatasource:driver-class-name: com.mysql.cj.jdbc.Driver # 8版本不需要修改 5版本需要修改url: urlusername: usernamepassword: password
我们这里使用到的是MyBatisPlus 的代码生成器,详情见 https://baomidou.com/pages/779a6e
我们需要引入MyBatisPlus的依赖和MyBatisPlusGenerator的依赖
1.8 3.5.2 3.5.3 2.3 com.baomidou mybatis-plus-boot-starter ${mybatis-plus.version} com.baomidou mybatis-plus-generator ${mybatis-plus-gender.version} org.apache.velocity velocity-engine-core ${velocity.version}
我们是用MyBatisPlus官网中的示例代码来完成代码生成,但是我们需要对官方模板进行一定的补充。

@Testvoid contextLoads() {FastAutoGenerator.create("url", "username", "password")// 全局配置.globalConfig((scanner, builder) -> {builder.author("MuZiNan") // 作者名称.dateType(DateType.ONLY_DATE).outputDir(System.getProperty("user.dir") + "\\src\\main\\java") //项目目录.enableSwagger() //开启Swagger.commentDate("yyyy-MM-dd HH:mm:ss"); //时间格式化})// 包配置.packageConfig((scanner, builder) -> {builder.parent("com.muzinan.template") //包列表.pathInfo(Collections.singletonMap(OutputFile.xml, System.getProperty("user.dir") + "\\src\\main\\resources\\mapper")); // xml生成位置})// 策略配置.strategyConfig((scanner, builder) -> builder.addInclude(getTables("all")) //生成哪些表 all则生成全部.controllerBuilder().enableRestStyle().enableHyphenStyle().serviceBuilder().formatServiceFileName("%sService") //service名称.formatServiceImplFileName("%sServiceImpl") //service实现类名称.entityBuilder().enableLombok().addTableFills(new Column("gmt_create", FieldFill.INSERT), //new Column("gmt_update", FieldFill.INSERT_UPDATE)).build()).execute();}/*** 处理 all 情况*/protected static List getTables(String tables) {return "all".equals(tables) ? Collections.emptyList() : Arrays.asList(tables.split(","));}
我们官方实例模板来进行修改,填空题👻
注意点: 自处配置并未设置覆盖原有文件(为了防止再次生成代码覆盖之前的代码。
若Mapper已经存在则再次使用代码生成器则会产生报错信息,此时我们需要检查是否生成表错误,或者将原有文件删除重新进行生成。


MyBatisPlus配制文件编写, mapper文件扫描.

/*** @author: MuZiNan* @createDate: 2022/11/30* @description: MyBatisPlus配置文件* @version: 1.0*/
@Configuration
@MapperScan(basePackages = "com.muzinan.template.mapper.**")
public class MyBatisPlusConfiguration {
}
application.yml文件新增
mybatis-plus:mapper-locations: classpath*:/mapper/*.xmlglobal-config:db-config:logic-delete-field: isDeletedlogic-delete-value: 1logic-not-delete-value: 0
依赖信息引入,此处除了引入Swagger依赖外,还引入了Swagger 的皮肤依赖。这也导致我们Swagger的访问路径发送变化。
3.0.0 3.0.3 io.springfox springfox-boot-starter ${swagger.version} io.swagger swagger-models com.github.xiaoymin knife4j-spring-boot-starter ${knife4j.version}
Swagger配制类信息,我们可以自行分包,通过swagger 的包扫码进行接口的分组实现。

/*** @author: MuZiNan* @createDate: 2022/11/30* @description: Swagger配制信息* @version: 1.0*/
@Configuration
public class SwaggerConfiguration {@Beanpublic Docket createSecurityRestApi() {return createRestApi("security", "com.muzinan.template.controller.security");}@Beanpublic Docket createSystemRestApi() {return createRestApi("system", "com.muzinan.template.controller.system");}/*** 创建api** @param groupName 分组名称* @param basePackage 包路径* @return Docket*/public Docket createRestApi(String groupName, String basePackage) {return new Docket(DocumentationType.OAS_30).enable(true).apiInfo(apiInfo()).groupName(groupName).select().apis(RequestHandlerSelectors.basePackage(basePackage)).paths(PathSelectors.any()).build();}/*** api简介信息** @return ApiInfo*/private ApiInfo apiInfo() {return new ApiInfoBuilder().title("标题:木字楠后台管理系统模板").description("描述: 木字楠后台管理系统模板接口文档...").contact(new Contact("木字楠", "www.nanjustar.top", "486356410@qq.com")).version("v1.0").build();}}
手动在数据库中添加了一条登陆日志记录,方便接下来的接口测试。

编写测试接口
/*** * 登陆日志表 前端控制器*
** @author MuZiNan* @since 2022-11-30 10:18:24*/
@RestController
@Api(tags = "登陆日志模块")
@RequestMapping("/login-log")
public class LoginLogController {@Autowiredprivate LoginLogService loginLogService;@ApiOperation(value = "查询列表")@GetMapping("/list")public ResponseResult> listData() {return ResponseResult.success("查询成功", loginLogService.list());}}
测试成功(此处使用的是 FastRequest 插件,为收费插件)

Swagger文档查看
我们会发现在System分组下已经出现了对应的接口信息,这是由于我们在Controller中使用了
@Api() 注解 和 @ApiOperation() 注解

我们启动项目之后需要去进行接口测试或者打开swagger文档,但是每次都需要我们去浏览器输入url,这样有时候会很麻烦,所以我们可以对主启动类进行一定改造。

public static void main(String[] args) {ConfigurableEnvironment env = SpringApplication.run(MuZiNanTemplateApplication.class, args).getEnvironment();log.info("\n----------------------------------------------------------\n\t" +"Application:'{}' is running! Access URLs:\n\t" +"Local URL: \thttp://localhost:{}\n\t" +"Document:\thttp://localhost:{}/doc.html\n" +"----------------------------------------------------------",env.getProperty("spring.application.name"), env.getProperty("server.port"), env.getProperty("server.port"));}
这样当我们启动成功之后,就可以直接通过下方url直接进行访问。


上一篇:Linux权限的理解