EasyCode integrates the configuration of mybatis-plus, including DTO, Request and MVC three-layer structure

Article directory

  • entity
  • mapper.java
  • mapper.xml
  • service
  • serviceImpl
  • controller
  • RespDTO
  • CreateRequest
  • UpdateRequest
  • PageRequest
  • How to use SpringCloud project
  • Generate generic entity classes
  • Generate mapper and service
  • Generate Controller

This article does not teach you how to install and use EasyCode, it just posts the configurations that can be used.
For specific usage of EasyCode, you can view other articles.

entity

##Import macro definition
$!{<!-- -->define.vm}

##Save file (macro definition)
#save("/entity", ".java")

##Package path (macro definition)
#setPackageSuffix("entity")

##Automatically import packages (global variables)
$!{<!-- -->autoImport.vm}

import java.io.Serializable;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
import lombok.Builder;

##Table comments (macro definition)
#tableComment("Table Entity Class")

@Data
@AllArgsConstructor
@NoArgsConstructor
@Builder
public class $!{<!-- -->tableInfo.name} {<!-- -->
#foreach($column in $tableInfo.pkColumn)
    #if(${column.comment})//${column.comment}#end
@TableId
    private $!{<!-- -->tool.getClsNameByFullName($column.type)} $!{<!-- -->column.name};
#end

#foreach($column in $tableInfo.otherColumn)
    #if(${column.comment})//${column.comment}#end

    private $!{<!-- -->tool.getClsNameByFullName($column.type)} $!{<!-- -->column.name};
#end

}


}

mapper.java

##Import macro definition
$!{<!-- -->define.vm}

##Set table suffix (macro definition)
#setTableSuffix("Mapper")

##Save file (macro definition)
#save("/mapper", "Mapper.java")
##Package path (macro definition)
#setPackageSuffix("mapper")

import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import org.apache.ibatis.annotations.Mapper;
import $!{<!-- -->tableInfo.savePackageName}.entity.$!{<!-- -->tableInfo.name};

##Table comments (macro definition)
#tableComment("Table database access layer")
@Mapper
public interface $!{<!-- -->tableName} extends BaseMapper<$!tableInfo.name> {<!-- -->

}


mapper.xml

##Introducing mybatis support
$!mybatisSupport

##Set the save name and save location
$!callback.setFileName($tool.append($!{<!-- -->tableInfo.name}, "Mapper.xml"))
$!callback.setSavePath($tool.append($modulePath, "/src/main/resources/mapper"))

##Get the primary key
#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">
    <!-- Result set -->
    <resultMap type="$!{tableInfo.savePackageName}.entity.$!{tableInfo.name}" id="$!{tableInfo.name}Map">
#foreach($column in $tableInfo.fullColumn)
        <result property="$!{column.name}" column="$!{column.obj.name}" jdbcType="$!{column.ext.jdbcType}"/>
#end
    </resultMap>
    
    <!-- Basic fields -->
    <sql id="Base_Column_List">
        #allSqlColumn()
    </sql>
    
</mapper>



service

##Import macro definition
$!{<!-- -->define.vm}

##Set table suffix (macro definition)
#setTableSuffix("Service")

##Save file (macro definition)
#save("/service", "Service.java")

##Package path (macro definition)
#setPackageSuffix("service")


import com.baomidou.mybatisplus.extension.service.IService;
import $!{<!-- -->tableInfo.savePackageName}.entity.$!{<!-- -->tableInfo.name};
import $!{<!-- -->tableInfo.savePackageName}.dto.$!{<!-- -->tableInfo.name}RespDTO;
import $!{<!-- -->tableInfo.savePackageName}.req.$!{<!-- -->tableInfo.name}CreateRequest;
import $!{<!-- -->tableInfo.savePackageName}.req.$!{<!-- -->tableInfo.name}PageRequest;
import $!{<!-- -->tableInfo.savePackageName}.req.$!{<!-- -->tableInfo.name}UpdateRequest;

##Table comments (macro definition)
#tableComment("Table Service Interface")
public interface $!{<!-- -->tableName} extends IService<$!tableInfo.name> {<!-- -->
    
    $!{<!-- -->tableInfo.name}RespDTO get$!{<!-- -->tableInfo.name}ById(Long $!{<!-- -->tableInfo.name}Id);

    PageResponse<$!{<!-- -->tableInfo.name}RespDTO> pageQuery$!{<!-- -->tableInfo.name}($!{<!-- -->tableInfo.name}PageRequest requestParam );

    $!{<!-- -->tableInfo.name}RespDTO update$!{<!-- -->tableInfo.name}($!{<!-- -->tableInfo.name}UpdateRequest updateRequest);

    Boolean delete$!{<!-- -->tableInfo.name}ById(Long $!{<!-- -->tableInfo.name}Id);

    Boolean batchDelete$!{<!-- -->tableInfo.name}(List<Long> ids);

    $!{<!-- -->tableInfo.name}RespDTO create$!{<!-- -->tableInfo.name}($!{<!-- -->tableInfo.name}CreateRequest createRequest);
}


serviceImpl

##Import macro definition
$!{<!-- -->define.vm}

##Set table suffix (macro definition)
#setTableSuffix("ServiceImpl")

##Save file (macro definition)
#save("/service/Impl", "ServiceImpl.java")

##Package path (macro definition)
#setPackageSuffix("service.Impl")

import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import org.springframework.stereotype.Service;
import lombok.extern.slf4j.Slf4j;
import $!{<!-- -->tableInfo.savePackageName}.entity.$!{<!-- -->tableInfo.name};
import $!{<!-- -->tableInfo.savePackageName}.mapper.$!{<!-- -->tableInfo.name}Mapper;
import $!{<!-- -->tableInfo.savePackageName}.service.$!{<!-- -->tableInfo.name}Service;
import $!{<!-- -->tableInfo.savePackageName}.dto.$!{<!-- -->tableInfo.name}RespDTO;
import $!{<!-- -->tableInfo.savePackageName}.req.$!{<!-- -->tableInfo.name}CreateRequest;
import $!{<!-- -->tableInfo.savePackageName}.req.$!{<!-- -->tableInfo.name}PageRequest;
import $!{<!-- -->tableInfo.savePackageName}.req.$!{<!-- -->tableInfo.name}UpdateRequest;


##Table comments (macro definition)
#tableComment("Table service implementation class")
@Service
@Slf4j
@RequiredArgsConstructor
public class $!{<!-- -->tableName} extends ServiceImpl<$!{<!-- -->tableInfo.name}Mapper, $!{<!-- -->tableInfo.name}> implements $ !{<!-- -->tableInfo.name}Service {<!-- -->
 
    private final $!{<!-- -->tableInfo.name}Mapper $!tool.firstLowerCase($!{<!-- -->tableInfo.name})Mapper;

    private final LogClient logClient;

    @Override
    public $!{<!-- -->tableInfo.name}RespDTO get$!{<!-- -->tableInfo.name}ById(Long $!{<!-- -->tableInfo.name}Id) {<!-- -->
        return null;
    }

    @Override
    public PageResponse<$!{<!-- -->tableInfo.name}RespDTO> pageQuery$!{<!-- -->tableInfo.name}($!{<!-- -->tableInfo.name}PageRequest requestParam) {<!-- -->
        return null;
    }

    @Override
    public $!{<!-- -->tableInfo.name}RespDTO update$!{<!-- -->tableInfo.name}($!{<!-- -->tableInfo.name}UpdateRequest updateRequest) { <!-- -->
        return null;
    }

    @Override
    public Boolean delete$!{<!-- -->tableInfo.name}ById(Long $!{<!-- -->tableInfo.name}Id) {<!-- -->
        return null;
    }

    @Override
    public Boolean batchDelete$!{<!-- -->tableInfo.name}(List<Long> ids) {<!-- -->
        return null;
    }

    @Override
    public $!{<!-- -->tableInfo.name}RespDTO create$!{<!-- -->tableInfo.name}($!{<!-- -->tableInfo.name}CreateRequest createRequest) { <!-- -->
        return null;
    }
}

controller

##Import macro definition
$!{<!-- -->define.vm}
##Set table suffix (macro definition)
#setTableSuffix("Controller")
##Save file (macro definition)
#save("/controller", "Controller.java")
##Package path (macro definition)
#setPackageSuffix("controller")
##Define service name
#set($serviceName = $!tool.append($!tool.firstLowerCase($!tableInfo.name), "Service"))
##Define entity object name
#set($entityName = $!tool.firstLowerCase($!tableInfo.name))


import $!{<!-- -->tableInfo.savePackageName}.entity.$!tableInfo.name;
import $!{<!-- -->tableInfo.savePackageName}.service.$!{<!-- -->tableInfo.name}Service;



import org.springframework.web.bind.annotation.*;
import java.util.List;

import $!{<!-- -->tableInfo.savePackageName}.entity.$!tableInfo.name;
import $!{<!-- -->tableInfo.savePackageName}.dto.$!{<!-- -->tableInfo.name}RespDTO;
import $!{<!-- -->tableInfo.savePackageName}.req.$!{<!-- -->tableInfo.name}CreateRequest;
import $!{<!-- -->tableInfo.savePackageName}.req.$!{<!-- -->tableInfo.name}PageRequest;
import $!{<!-- -->tableInfo.savePackageName}.req.$!{<!-- -->tableInfo.name}UpdateRequest;
import $!{<!-- -->tableInfo.savePackageName}.service.$!{<!-- -->tableInfo.name}Service;


import lombok.RequiredArgsConstructor;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.*;

import javax.validation.Valid;
import javax.validation.constraints.NotNull;
import java.util.List;
import java.util.concurrent.Executors;



##Table comments (macro definition)
#tableComment("Table control layer [not recommended to modify, if there are new methods, write them in subclasses]")

@VLog
@RestController
@RequestMapping("/v1/$!{entityName}")
@RequiredArgsConstructor
public class $!{<!-- -->tableName} {<!-- -->
  

    $!{<!-- -->tableInfo.name}Service $!{<!-- -->serviceName};
  
   /**
     * Query by ID
     * @param $!{<!-- -->entityName}Id
     * @return
     */
    @GetMapping("")
    public Result<$!{<!-- -->tableInfo.name}RespDTO> get$!{<!-- -->tableInfo.name}ById(@Validated @RequestParam(name = "$!{entityName} Id") @NotNull(message = "$!{entityName}Id Can not be null") Long $!{<!-- -->entityName}Id) {<!-- -->
        $!{<!-- -->tableInfo.name}RespDTO result = $!{<!-- -->entityName}Service.get$!{<!-- -->tableInfo.name}ById($! {<!-- -->entityName}Id);
        return Result.ok(result);
    }

    /**
     * Conditional paging query
     * @param requestParam
     * @return
     */
    @GetMapping("/page")
    public Result<PageResponse<$!{<!-- -->tableInfo.name}RespDTO>> pageQuery$!{<!-- -->tableInfo.name}(@Validated $!{<!-- --> tableInfo.name}PageRequest requestParam) {<!-- -->
        return Result.ok($!{<!-- -->entityName}Service.pageQuery$!{<!-- -->tableInfo.name}(requestParam));
    }

    /**
     * Modify based on ID
     * @param updateRequest
     * @return
     */
    @PutMapping("")
    public Result<$!{<!-- -->tableInfo.name}RespDTO> update$!{<!-- -->tableInfo.name}(@Validated @RequestBody $!{<!-- -->tableInfo .name}UpdateRequest updateRequest){<!-- -->
       return Result.ok($!{<!-- -->entityName}Service.update$!{<!-- -->tableInfo.name}(updateRequest));
    }

    /**
     * Modify based on ID
     * @param $!{<!-- -->entityName}Id
     * @return
     */
    @DeleteMapping("")
    public Result<Boolean> delete$!{<!-- -->tableInfo.name}ById(@RequestParam @Validated Long $!{<!-- -->entityName}Id){<!-- -->
        return Result.ok($!{<!-- -->entityName}Service.delete$!{<!-- -->tableInfo.name}ById($!{<!-- -->entityName}Id) );
    }

    /**
     * Batch delete based on ID
     * @param ids
     * @return
     */
    @DeleteMapping("/batch")
    public Result<Boolean> batchDelete$!{<!-- -->tableInfo.name}(@RequestBody List<Long> ids){<!-- -->
        return Result.ok($!{<!-- -->entityName}Service.batchDelete$!{<!-- -->tableInfo.name}(ids));
    }

    /**
     * Create
     * @param createRequest
     * @return
     */
    @PostMapping("")
    public Result<$!{<!-- -->tableInfo.name}RespDTO> create$!{<!-- -->tableInfo.name}(@RequestBody @Valid $!{<!-- -->tableInfo .name}CreateRequest createRequest){<!-- -->
        return Result.ok($!{<!-- -->entityName}Service.create$!{<!-- -->tableInfo.name}(createRequest));

    }
  
}


RespDTO

##Import macro definition
$!{<!-- -->define.vm}

##Set table suffix (macro definition)
#setTableSuffix("RespDTO")
##Save file (macro definition)
#save("/dto", "RespDTO.java")
##Package path (macro definition)
#setPackageSuffix("dto")
##Automatically import packages (global variables)
$!{<!-- -->autoImport.vm}

import java.io.Serializable;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
import lombok.Builder;


@Data
@AllArgsConstructor
@NoArgsConstructor
@Builder
public class $!{<!-- -->tableName} {<!-- -->

}

CreateRequest

##Import macro definition
$!{<!-- -->define.vm}

##Set table suffix (macro definition)
#setTableSuffix("CreateRequest")
##Save file (macro definition)
#save("/req", "CreateRequest.java")
##Package path (macro definition)
#setPackageSuffix("req")

##Automatically import packages (global variables)
$!{<!-- -->autoImport.vm}

import java.io.Serializable;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
import lombok.Builder;


@Data
@AllArgsConstructor
@NoArgsConstructor
@Builder
public class $!{<!-- -->tableName} {<!-- -->

}

UpdateRequest

##Import macro definition
$!{<!-- -->define.vm}

##Set table suffix (macro definition)
#setTableSuffix("UpdateRequest")
##Save file (macro definition)
#save("/req", "UpdateRequest.java")
##Package path (macro definition)
#setPackageSuffix("req")

##Automatically import packages (global variables)
$!{<!-- -->autoImport.vm}

import java.io.Serializable;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
import lombok.Builder;


@Data
@AllArgsConstructor
@NoArgsConstructor
@Builder
public class $!{<!-- -->tableName} {<!-- -->

}

PageRequest

##Import macro definition
$!{<!-- -->define.vm}

##Set table suffix (macro definition)
#setTableSuffix("PageRequest")
##Save file (macro definition)
#save("/req", "PageRequest.java")
##Package path (macro definition)
#setPackageSuffix("req")

##Automatically import packages (global variables)
$!{<!-- -->autoImport.vm}

import java.io.Serializable;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
import lombok.Builder;


@Data
@AllArgsConstructor
@NoArgsConstructor
@Builder
public class $!{<!-- -->tableName} {<!-- -->

}

How to use SpringCloud project

Under the SpringCloud project, my different modules store different classes.

For example, common stores general entity classes, core stores mappers and services, and web stores controller layer code.
Then when using EasyCode to generate code. Methods as below:

Generate generic entity classes

Generate mapper and service

Generate Controller