springboot整合mybatis代码快速生成

特别说明:本次项目整合基于idea进行的,如果使用Eclipse可能操作会略有不同,不过总的来说不影响。

springboot整合之如何选择版本及项目搭建

springboot整合之版本号统一管理 

springboot整合mybatis-plus+durid数据库连接池

springboot整合swagger

springboot整合mybatis代码快速生成

springboot整合之统一结果返回

springboot整合之统一异常处理

springboot整合之logback日志配置

springboot整合pagehelper分页

springboot整合本地缓存

springboot整合redis + redisson

springboot整合elasticsearch

springboot整合rabbitMq

springboot整合canal实现缓存一致性

springboot整合springSecurity(前后端不分离版本)

一、为什么要使用逆向代码生成

1.代码快速生成

使用mybatis代码快速生成,能够帮我们快速逆向生成实体类、mapper、service以及controller这些基础代码。特别是当我们的项目有很多表时它能够帮助我们节省很多时间,极大的提升我们的开发效率。举个例子来说,假设我们有30张表,如果手动创建所有实体类,mapper,service以及controller再加注释的话,那么就算很快一张表也得2分钟左右吧。那这样算下来就要1个小时了。但是我们使用快速代码生成只需要2分钟就可以操作好。

2.避免拼写错误

小伙伴们应该斗深有体会,那就是很多时候我们会出现代码拼写错误。比如user有时候写成了uesr。如果我们不适用快速代码,那我们就按照上面所说的30张表来算,那最低也要创建120个类或者接口。这么大的量我觉得真没办法保证一点错都不出。所以从这个角度来说我觉得引入mybatis能够帮助我们避免很多不必要的错误拼写。

好了,接下来我们就进入今天的正题,接着使用原来项目进行今天的整合---mybatis快速代码生成。

二、pom坐标导入

这里我只粘贴了本此需要导入的依赖。一共是两个jar包。一个是mybatis-plus-generator一个是velocity-engine-core。

        
        
            3.4.1
            2.0
        

        
        
            com.baomidou
            mybatis-plus-generator
            ${mybatis-plus-gene.version}
        

        
        
            org.apache.velocity
            velocity-engine-core
            ${velocity.version}
                

有一点需要说明一下,因为我们使用的mybatis-plus时3.4.2版本的,但是我去查找mybatis逆向代码依赖时,没有查到对应版本。所以我就选择了一个接近的然后使用人数相对多一点的版本。经过测试没啥问题,小伙伴们可以放心使用。

springboot整合mybatis代码快速生成_第1张图片

 三、编写逆向代码工具类

因为代码比较少而且相对简单,所以我把所有的注释都加在类里了。这样也更方便大家理解。具体位置如下。

springboot整合mybatis代码快速生成_第2张图片

 逆向生成代码类代码:

package com.example.springbootdemo;

import com.baomidou.mybatisplus.annotation.DbType;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.generator.AutoGenerator;
import com.baomidou.mybatisplus.generator.config.DataSourceConfig;
import com.baomidou.mybatisplus.generator.config.GlobalConfig;
import com.baomidou.mybatisplus.generator.config.PackageConfig;
import com.baomidou.mybatisplus.generator.config.StrategyConfig;
import com.baomidou.mybatisplus.generator.config.rules.DateType;
import com.baomidou.mybatisplus.generator.config.rules.NamingStrategy;
import org.junit.Test;

/**
 * @description: CodeGenerator 
* @date: 2022/12/25 14:19
* @author: William
* @version: 1.0
*/ public class CodeGenerator { @Test public void run() { // 1、创建代码生成器 AutoGenerator mpg = new AutoGenerator(); // 2、全局配置 GlobalConfig gc = new GlobalConfig(); //获取当前项目的路径 String projectPath = System.getProperty("user.dir"); //拼接代码生成以后存放的目录 gc.setOutputDir(projectPath + "/src/main/java"); gc.setAuthor("William"); //生成后是否打开资源管理器 gc.setOpen(false); //重新生成时文件是否覆盖 gc.setFileOverride(true); //去掉Service接口的首字母I gc.setServiceName("%sService"); //主键策略 gc.setIdType(IdType.AUTO); //定义生成的实体类中日期类型 gc.setDateType(DateType.ONLY_DATE); //开启Swagger2模式 gc.setSwagger2(true); mpg.setGlobalConfig(gc); // 3、数据源配置 DataSourceConfig dsc = new DataSourceConfig(); dsc.setUrl("jdbc:mysql://localhost:3306/test?serverTimezone=GMT%2B8"); dsc.setDriverName("com.mysql.cj.jdbc.Driver"); dsc.setUsername("root"); dsc.setPassword("123456"); dsc.setDbType(DbType.MYSQL); mpg.setDataSource(dsc); // 4、包配置 PackageConfig pc = new PackageConfig(); pc.setParent("com.example.springbootdemo"); //pc.setModuleName("user"); //模块名,多模块开发,或者微服务模块使用,也可以配置接口版本号,例如:v1 pc.setController("controller"); pc.setEntity("entity"); pc.setService("service"); pc.setMapper("mapper"); mpg.setPackageInfo(pc); // 5、策略配置 StrategyConfig strategy = new StrategyConfig(); //需要逆向的表名 strategy.setInclude("user"); strategy.setNaming(NamingStrategy.underline_to_camel);//数据库表映射到实体的命名策略 //strategy.setTablePrefix(pc.getModuleName() + "_"); //生成实体时去掉表前缀 strategy.setColumnNaming(NamingStrategy.underline_to_camel);//数据库表字段映射到实体的命名策略 strategy.setEntityLombokModel(true); // lombok 模型 @Accessors(chain = true) setter链式操作 strategy.setRestControllerStyle(true); //restful api风格控制器 strategy.setControllerMappingHyphenStyle(true); //url中驼峰转连字符 mpg.setStrategy(strategy); // 6、执行 mpg.execute(); } }

使用也比较简单,我们只需要修改数据库相关配置,然后把需要逆向的表配置好,直接运行就行了。

//需要逆向的表名
strategy.setInclude("user","order","goods");

这里做一下说明,就是这里可以配置多张表,只要用逗号隔开就行了。

四、测试逆向代码生成

我们可以先把原来的entity、mapper、service、controller这四个包先删除。删除以后结构如下:

springboot整合mybatis代码快速生成_第3张图片

 然后运行我们的逆向代码工具类。

 springboot整合mybatis代码快速生成_第4张图片

 springboot整合mybatis代码快速生成_第5张图片

 可以看到成功运行后,我们的代码以及包结构都帮我们生成了。是不是很方便。这样即使我们项目表很多也只需要运行一下就会帮我们全部生成了。

五、启动测试

最后一步,老规矩,就是启动测试一下,看看我们的项目能不能正常启动,然后再写一个测试类。测试一下。测试方法就直接写在了UserController里面了。

package com.example.springbootdemo.controller;


import com.example.springbootdemo.entity.User;
import com.example.springbootdemo.service.UserService;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import net.bytebuddy.asm.Advice;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestMapping;

import org.springframework.web.bind.annotation.RestController;

/**
 * 

* 前端控制器 *

* * @author William * @since 2022-12-25 */ @Api(tags = "用户相关接口") @RestController @RequestMapping("/user") public class UserController { @Autowired private UserService userService; @ApiOperation(value = "根据用户ID获取用户信息") @GetMapping("/{id}") public String getUser(@PathVariable("id") Integer id){ if(id == null || id <= 0){ return "参数错误!"; } User user = userService.getById(id); if(user == null){ return "当前用户不存在,参数错误"; } return user.toString(); } }

 正常启动没有问题。那我们接下来就测试一下是不是数据库查询也能正常运行。我们访问http://localhost:8080/doc.html

进行测试。

springboot整合mybatis代码快速生成_第6张图片

 最终测试顺利通过,没有什么问题。OK到这里我们就算正式完成了我们的整合了。在项目开发初期我们就可以使用这种方式进行快速代码生成。

个人建议,如果逆向完成了可以删除掉这个逆向依赖的jar包以及逆向的代码。因为逆向完成以后这两个包就没用了,打包部署时会占用内存,留着没有必要。

希望对大家有所帮助,如果喜欢请关注点赞呦~谢谢啦

你可能感兴趣的:(springboot,spring,boot,mybatis,java,代码逆向生成)