如何使用easyCode逆向生成后端代码,详解如下!

第一步:idea连接数据库

在这里插入图片描述
先连接上自己的数据库,之后能在Database里面找到
在这里插入图片描述

第二步:下载easyCode插件

在这里插入图片描述

第三步:pom依赖

有些其他的依赖 如果不需要刻意去除!

    <dependencies>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-cache</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>
        <dependency>
            <groupId>org.mybatis.spring.boot</groupId>
            <artifactId>mybatis-spring-boot-starter</artifactId>
            <version>2.1.3</version>
        </dependency>

        <dependency>
            <groupId>mysql</groupId>
            <artifactId>mysql-connector-java</artifactId>
            <scope>runtime</scope>
        </dependency>
        <dependency>
            <groupId>org.projectlombok</groupId>
            <artifactId>lombok</artifactId>
            <optional>true</optional>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-test</artifactId>
            <scope>test</scope>
            <exclusions>
                <exclusion>
                    <groupId>org.junit.vintage</groupId>
                    <artifactId>junit-vintage-engine</artifactId>
                </exclusion>
            </exclusions>
        </dependency>
        <!-- mybatisPlus 核心库 -->
        <dependency>
            <groupId>com.baomidou</groupId>
            <artifactId>mybatis-plus-boot-starter</artifactId>
            <version>3.1.0</version>
        </dependency>
        <!-- 引入阿里数据库连接池 -->
        <dependency>
            <groupId>com.alibaba</groupId>
            <artifactId>druid</artifactId>
            <version>1.1.6</version>
        </dependency>


        <!-- https://mvnrepository.com/artifact/io.springfox/springfox-swagger2 -->
        <dependency>
            <groupId>io.springfox</groupId>
            <artifactId>springfox-swagger2</artifactId>
            <version>2.7.0</version>
        </dependency>


        <!-- https://mvnrepository.com/artifact/io.springfox/springfox-swagger-ui -->
        <dependency>
            <groupId>io.springfox</groupId>
            <artifactId>springfox-swagger-ui</artifactId>
            <version>2.7.0</version>
        </dependency>

    </dependencies>

第四步:修改模板,使用自定义的

下面放的是本人使用的模板
在这里插入图片描述
进入settings->Other serttings-easyCode->Template Setting
接下来自定义一个模板

entity

##引入宏定义
$!init
$!define

##使用宏定义设置回调(保存位置与文件后缀)
#save("/entity", ".java")

##使用宏定义设置包后缀
#setPackageSuffix("entity")

##使用全局变量实现默认包导入
$!autoImport
import com.baomidou.mybatisplus.extension.activerecord.Model;
import com.baomidou.mybatisplus.annotation.TableField;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.experimental.Accessors;
 
##使用宏定义实现类注释信息
###tableComment("实体类")
/**
 * @author $!author
 * @since $!time.currTime()
 */
@Data
@EqualsAndHashCode(callSuper = true)
@Accessors(chain = true)
@Builder
@TableName(value="$tableInfo.obj.name")
public class $!{
    
    tableInfo.name} extends Model {
    
    
    private static final long serialVersionUID = $!tool.serial();
#foreach($column in $tableInfo.fullColumn)
    ## 使用swagger注释即可,这里不用再使用文档注释了,别的情况请根据需要调整
    ##    #if(${column.comment})/**
    ##    * ${column.comment}
    ##    */#end
    
    @TableField("$column.obj.name")
    private $!{
    
    tool.getClsNameByFullName($column.type)} $!{
    
    column.name};
#end

## 因为使用了lombok,所以去掉get和set方法的生成
###foreach($column in $tableInfo.fullColumn)
####使用宏定义实现get,set方法
###getSetMethod($column)
###end
}

因为我做了去除前缀t_,所以一定要记得加上注解@TableName(value="$tableInfo.obj.name"),不然会找不到表,找的是剔除了前缀的表,所以自然找不到,这里一定要注意!

controller

$!init
##定义初始变量
#set($tableName = $tool.append($tableInfo.name, "Controller"))
##设置回调
$!callback.setFileName($tool.append($tableName, ".java"))
$!callback.setSavePath($tool.append($tableInfo.savePath, "/controller"))
##拿到主键
#if(!$tableInfo.pkColumn.isEmpty())
    #set($pk = $tableInfo.pkColumn.get(0))
#end

#if($tableInfo.savePackageName)package $!{tableInfo.savePackageName}.#{end}controller;
 
import $!{
    
    tableInfo.savePackageName}.entity.$!{
    
    tableInfo.name};
import $!{
    
    tableInfo.savePackageName}.service.$!{
    
    tableInfo.name}Service;
import io.swagger.annotations.Api;
import lombok.AllArgsConstructor;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.*;
 
 
/**
 * @author $!author
 * @since $!time.currTime()
 */
@Api(tags = "$!{tableInfo.comment}($!{tableInfo.name})") 
@Validated
@RestController
@AllArgsConstructor
@RequestMapping("$!tool.firstLowerCase($tableInfo.name)")
public class $!{
    
    tableName} {
    
    
    @Autowired
    private  $!{
    
    tableInfo.name}Service $!tool.firstLowerCase($tableInfo.name)Service;
 
}

service

$!init
##定义初始变量
#set($tableName = $tool.append($tableInfo.name, "Service"))
##设置回调
$!callback.setFileName($tool.append($tableName, ".java"))
$!callback.setSavePath($tool.append($tableInfo.savePath, "/service"))

##拿到主键
#if(!$tableInfo.pkColumn.isEmpty())
    #set($pk = $tableInfo.pkColumn.get(0))
#end

#if($tableInfo.savePackageName)package $!{tableInfo.savePackageName}.#{end}service;
 
 
import com.baomidou.mybatisplus.extension.service.IService;
import $!{
    
    tableInfo.savePackageName}.entity.$!{
    
    tableInfo.name};
 
 
/**
 * $!{
    
    tableInfo.comment}($!{
    
    tableInfo.name})表服务实现类
 *
 * @author $!author
 * @since $!time.currTime()
 */
public interface $!{
    
    tableName} extends IService<$!{
    
    tableInfo.name}> {
    
    
}

serviceimpl

$!init
##定义初始变量
#set($tableName = $tool.append($tableInfo.name, "ServiceImpl"))
#set($serviceName = $tool.append($tableInfo.name, "Service"))
##设置回调
$!callback.setFileName($tool.append($tableName, ".java"))
$!callback.setSavePath($tool.append($tableInfo.savePath, "/service/impl"))

##拿到主键
#if(!$tableInfo.pkColumn.isEmpty())
    #set($pk = $tableInfo.pkColumn.get(0))
#end

#if($tableInfo.savePackageName)package $!{tableInfo.savePackageName}.#{end}service.impl;
 
import $!{
    
    tableInfo.savePackageName}.entity.$!{
    
    tableInfo.name};
import $!{
    
    tableInfo.savePackageName}.mapper.$!{
    
    tableInfo.name}Mapper;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import $!{
    
    tableInfo.savePackageName}.service.$!{
    
    tableInfo.name}Service;
import org.springframework.stereotype.Service;
 
/**
 * $!{
    
    tableInfo.comment}($!{
    
    tableInfo.name})表服务实现类
 *
 * @author $!author
 * @since $!time.currTime()
 */
@Service
public class $!{
    
    tableName} extends ServiceImpl<$!{
    
    tableInfo.name}Mapper, $!{
    
    tableInfo.name}> implements $!{
    
    serviceName} {
    
    
    @Autowired
    private $!{
    
    tableInfo.name}Mapper $!tool.firstLowerCase($!{
    
    tableInfo.name})Mapper;

}

mapper


$!init
##定义初始变量
#set($tableName = $tool.append($tableInfo.name, "Mapper"))
##设置回调
$!callback.setFileName($tool.append($tableName, ".java"))
$!callback.setSavePath($tool.append($tableInfo.savePath, "/mapper"))

##拿到主键
#if(!$tableInfo.pkColumn.isEmpty())
    #set($pk = $tableInfo.pkColumn.get(0))
#end

#if($tableInfo.savePackageName)package $!{tableInfo.savePackageName}.#{end}mapper;
 
import $!{
    
    tableInfo.savePackageName}.entity.$!{
    
    tableInfo.name};
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import org.apache.ibatis.annotations.Mapper;
 
/**
 * $!{
    
    tableInfo.comment}($!{
    
    tableInfo.name})表数据库访问层
 *
 * @author $!author
 * @since $!time.currTime()
 */
 @Mapper
public interface $!{
    
    tableName} extends BaseMapper<$!{
    
    tableInfo.name}>{
    
    
 
}

mapper.xml

$!init
##引入mybatis支持
$!mybatisSupport

##设置保存名称与保存位置
$!callback.setFileName($tool.append($!{
    
    tableInfo.name}, "Dao.xml"))
$!callback.setSavePath($tool.append($modulePath, "/src/main/resources/mapper"))

##拿到主键
#if(!$tableInfo.pkColumn.isEmpty())
    #set($pk = $tableInfo.pkColumn.get(0))
#end
 
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="$!{tableInfo.savePackageName}.mapper.$!{tableInfo.name}Mapper">
 
</mapper>

如果需要对表格进行一些预处理,比如去除t_这样的前缀
方法如下:”

在这里插入图片描述
同样的位置,打开Global Config 的init

##初始化区域

##去掉表的t_前缀
$!tableInfo.setName($tool.getClassName($tableInfo.obj.name.replaceFirst("book_","")))

#if($tableInfo.obj.name.startsWith("t_"))
    $tableInfo.setName($tool.getClassName($tableInfo.obj.name.substring(2)))
#end

##参考阿里巴巴开发手册,POJO 类中布尔类型的变量,都不要加 is 前缀,否则部分框架解析会引起序列化错误
#foreach($column in $tableInfo.fullColumn)
    #if($column.name.startsWith("is") && $column.type.equals("java.lang.Boolean"))
        $!column.setName($tool.firstLowerCase($column.name.substring(2)))
    #end
#end

##实现动态排除列
#set($temp = $tool.newHashSet("testCreateTime", "otherColumn"))
#foreach($item in $temp)
    #set($newList = $tool.newArrayList())
    #foreach($column in $tableInfo.fullColumn)
        #if($column.name!=$item)
            ##带有反回值的方法调用时使用$tool.call来消除返回值
            $tool.call($newList.add($column))
        #end
    #end
    ##重新保存
    $tableInfo.setFullColumn($newList)
#end

##对importList进行篡改
#set($temp = $tool.newHashSet())
#foreach($column in $tableInfo.fullColumn)
    #if(!$column.type.startsWith("java.lang."))
        ##带有反回值的方法调用时使用$tool.call来消除返回值
        $tool.call($temp.add($column.type))
    #end
#end
##覆盖
#set($importList = $temp)

之后在所有的模板中引入即可:
在这里插入图片描述

第五步:生成代码!

点击如下:
在这里插入图片描述
Path指生成的路径
点击需要生成的文件即可!
特别注意!!
此处的package一定要自己指定,不然生成的文件是不带有包名的
在这里插入图片描述
至此,后端代码生成完毕

别忘记一个最重要的点!

在这里插入图片描述
记得在Springboot的启动类上加上@MapperScan注解!

猜你喜欢

转载自blog.csdn.net/Pzzzz_wwy/article/details/109278036
今日推荐