mybatis-plus新版(3.5.3.1)CRUD分页代码生成器(完整代码,亲测可用)
mybatis-plus新版(3.5.3.1)代码生成器
·
文章目录
| 名称 | 版本 |
|---|---|
| mybatis-plus | 3.5.3.1 |
| jdk | 1.8 |
Maven依赖
<dependencies>
<!--mysql驱动包-->
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<scope>runtime</scope>
<version>8.0.28</version>
</dependency>
<!--mybatis-plus驱动包-->
<dependency>
<groupId>com.baomidou</groupId>
<artifactId>mybatis-plus-annotation</artifactId>
<scope>compile</scope>
</dependency>
<!--模板引擎-->
<dependency>
<groupId>org.apache.velocity</groupId>
<artifactId>velocity-engine-core</artifactId>
<version>2.3</version>
</dependency>
<!--配置ApiModel在实体类中不生效-->
<dependency>
<groupId>com.spring4all</groupId>
<artifactId>spring-boot-starter-swagger</artifactId>
<version>1.5.1.RELEASE</version>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-validation</artifactId>
</dependency>
<!--freemarker-->
<dependency>
<groupId>org.freemarker</groupId>
<artifactId>freemarker</artifactId>
</dependency>
<!--lombok-->
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>com.baomidou</groupId>
<artifactId>mybatis-plus-generator</artifactId>
</dependency>
</dependencies>
代码实现
Main方法
public class CommonToolApplication {
/**
* 当前要生成的模块
*/
private static final ModuleEnum TO_GENERATE_MODULE = ModuleEnum.OTHER;
/**
* 当前要生成的表
*/
private static final String[] TO_GENERATE_TABLE_NAME = {"role_info"};
public static void main(String[] args) {
FastAutoGenerator
.create("jdbc:mysql://172.16.11.15:3306" + TO_GENERATE_MODULE.getModulePath() + "?useSSL=false&serverTimezone=GMT%2B8&useUnicode=true&allowPublicKeyRetrieval=true&characterEncoding=utf-8","root","123456")
.globalConfig(builder ->
builder
.outputDir(System.getProperty("user.dir") + TO_GENERATE_MODULE.getModuleService() + "/src/main/java") //输出到哪个目录
.author("generator")
.enableSwagger()
.dateType(DateType.TIME_PACK))
.packageConfig(builder ->
builder
.parent(TO_GENERATE_MODULE.modulePackage) // 父包名
// .moduleName("sys") // 父包模块名
.entity("pojo.entity")
.service("service")
.serviceImpl("service.impl")
.mapper("mapper")
.xml("mapper.xml")
.controller("controller")
).templateConfig(builder ->
builder
.entity("/templates/entity.java")
.service("/templates/service.java")
.serviceImpl("/templates/serviceImpl.java")
.mapper("/templates/mapper.java")
.xml("/templates/mapper.xml")
.controller("/templates/controller.java")
).injectionConfig(builder ->
builder
.beforeOutputFile((tableInfo, objectMap) -> {
out.println("tableInfo: " + tableInfo.getEntityName() + " objectMap: " + objectMap.size());
})
.customFile(new CustomFile.Builder().fileName("DTO.java").filePath(System.getProperty("user.dir") + TO_GENERATE_MODULE.getModuleService() + "/src/main/java").enableFileOverride().templatePath("templates/dto.java.ftl").packageName(TO_GENERATE_MODULE.modulePackage + "/pojo/dto").build())
.customFile(new CustomFile.Builder().fileName("VO.java").filePath(System.getProperty("user.dir") + TO_GENERATE_MODULE.getModuleService() + "/src/main/java").enableFileOverride().templatePath("templates/vo.java.ftl").packageName(TO_GENERATE_MODULE.modulePackage + "/pojo/vo").build())
.customFile(new CustomFile.Builder().fileName("Query.java").filePath(System.getProperty("user.dir") + TO_GENERATE_MODULE.getModuleService() + "/src/main/java").enableFileOverride().templatePath("templates/paramQuery.java.ftl").packageName(TO_GENERATE_MODULE.modulePackage + "/pojo/query").build())
.customFile(new CustomFile.Builder().fileName("Convert.java").filePath(System.getProperty("user.dir") + TO_GENERATE_MODULE.getModuleService() + "/src/main/java").templatePath("templates/convert.java.ftl").packageName(TO_GENERATE_MODULE.modulePackage + "/component/convert").build())
).strategyConfig(builder ->
// 策略配置
builder
.enableCapitalMode() // 开启大写命名
.addInclude(TO_GENERATE_TABLE_NAME) // 需要加载的表
).strategyConfig(builder ->
builder
.entityBuilder()
.enableFileOverride() // 覆盖已生成文件
.enableChainModel()
.enableLombok()
.enableTableFieldAnnotation()
.versionPropertyName("version") // 乐观锁字段 生效要把乐观锁拦截器注入
.logicDeletePropertyName("deleted")
.addTableFills(new Column("create_time", FieldFill.INSERT))
.addTableFills(new Property("updateTime", FieldFill.INSERT_UPDATE))
.idType(IdType.ASSIGN_ID) // 主键的ID类型
).strategyConfig(builder ->
builder
.controllerBuilder()
.enableFileOverride() // 覆盖已生成文件 默认值:false
.enableHyphenStyle()
.enableRestStyle()
).strategyConfig(builder ->
builder.
serviceBuilder()
.formatServiceFileName("%sService")
.formatServiceImplFileName("%sServiceImpl")
).templateEngine(new FreemarkerTemplateEngine())
.execute();
}
@AllArgsConstructor
enum ModuleEnum {
/**
* module
*/
OTHER("/admin", "com.common.sys", "/common/common-tool"),
;
@Getter
private String modulePath;
@Getter
private String modulePackage;
@Getter
private String moduleService;
}
}
dto.java.ftl
package ${package.Parent}.pojo.dto;
<#list table.importPackages as pkg>
</#list>
<#if springdoc>
import io.swagger.v3.oas.annotations.media.Schema;
<#elseif swagger>
import java.io.Serializable;
import io.swagger.annotations.ApiModelProperty;
</#if>
<#if entityLombokModel>
import lombok.Getter;
import lombok.Setter;
<#if chainModel>
import lombok.experimental.Accessors;
</#if>
</#if>
/**
* <p>
* ${table.comment!}
* </p>
*
* @author ${author}
* @since ${date}
*/
<#if entityLombokModel>
@Getter
@Setter
<#if chainModel>
@Accessors(chain = true)
</#if>
</#if>
<#if table.convert>
</#if>
<#if springdoc>
@Schema(name = "${entity}", description = "$!{table.comment}")
<#elseif swagger>
</#if>
<#if superEntityClass??>
public class ${entity} extends ${superEntityClass}<#if activeRecord><${entity}></#if> {
<#elseif activeRecord>
public class ${entity} extends Model<${entity}> {
<#elseif entitySerialVersionUID>
public class ${entity}DTO implements Serializable {
<#else>
public class ${entity}DTO {
</#if>
<#-- ---------- BEGIN 字段循环遍历 ---------->
<#list table.fields as field>
<#if field.comment!?length gt 0>
<#if springdoc>
@Schema(description = "${field.comment}")
<#elseif field.keyFlag || field.fill?? || field.versionField || field.logicDeleteField>
<#elseif swagger>
@ApiModelProperty("${field.comment}")
<#else>
/**
* ${field.comment}
*/
</#if>
</#if>
<#-- 普通字段 -->
<#if field.keyFlag || field.fill?? || field.versionField || field.logicDeleteField>
<#else>
private ${field.propertyType} ${field.propertyName};
</#if>
</#list>
<#------------ END 字段循环遍历 ---------->
<#if !entityLombokModel>
<#list table.fields as field>
<#if field.propertyType == "boolean">
<#assign getprefix="is"/>
<#else>
<#assign getprefix="get"/>
</#if>
public ${field.propertyType} ${getprefix}${field.capitalName}() {
return ${field.propertyName};
}
<#if chainModel>
public ${entity} set${field.capitalName}(${field.propertyType} ${field.propertyName}) {
<#else>
public void set${field.capitalName}(${field.propertyType} ${field.propertyName}) {
</#if>
this.${field.propertyName} = ${field.propertyName};
<#if chainModel>
return this;
</#if>
}
</#list>
</#if>
<#if entityColumnConstant>
<#list table.fields as field>
public static final String ${field.name?upper_case} = "${field.name}";
</#list>
</#if>
<#if activeRecord>
@Override
public Serializable pkVal() {
<#if keyPropertyName??>
return this.${keyPropertyName};
<#else>
return null;
</#if>
}
</#if>
<#if !entityLombokModel>
@Override
public String toString() {
return "${entity}{" +
<#list table.fields as field>
<#if field_index==0>
"${field.propertyName} = " + ${field.propertyName} +
<#else>
", ${field.propertyName} = " + ${field.propertyName} +
</#if>
</#list>
"}";
}
</#if>
}
vo.java.ftl
package ${package.Parent}.pojo.vo;
<#if springdoc>
import io.swagger.v3.oas.annotations.media.Schema;
<#elseif swagger>
import java.io.Serializable;
import io.swagger.annotations.ApiModelProperty;
</#if>
<#if entityLombokModel>
import lombok.Getter;
import lombok.Setter;
<#if chainModel>
import lombok.experimental.Accessors;
</#if>
</#if>
/**
* <p>
* ${table.comment!}
* </p>
*
* @author ${author}
* @since ${date}
*/
<#if entityLombokModel>
@Getter
@Setter
<#if chainModel>
@Accessors(chain = true)
</#if>
</#if>
<#if table.convert>
</#if>
<#if springdoc>
@Schema(name = "${entity}", description = "$!{table.comment}")
<#elseif swagger>
</#if>
<#if superEntityClass??>
public class ${entity}VO extends ${superEntityClass}<#if activeRecord><${entity}></#if> {
<#elseif activeRecord>
public class ${entity}VO extends Model<${entity}> {
<#elseif entitySerialVersionUID>
public class ${entity}VO implements Serializable {
<#else>
public class ${entity}VO {
</#if>
<#if entitySerialVersionUID>
</#if>
<#-- ---------- BEGIN 字段循环遍历 ---------->
<#list table.fields as field>
<#if field.keyFlag>
<#assign keyPropertyName="${field.propertyName}"/>
</#if>
<#if field.comment!?length gt 0>
<#if springdoc>
@Schema(description = "${field.comment}")
<#elseif field.versionField || field.logicDeleteField>
<#elseif swagger>
@ApiModelProperty("${field.comment}")
<#else>
/**
* ${field.comment}
*/
</#if>
</#if>
<#if field.keyFlag>
<#-- 主键 -->
<#if field.keyIdentityFlag>
<#elseif idType??>
@TableId(value = "${field.annotationColumnName}", type = IdType.${idType})
<#elseif field.convert>
@TableId("${field.annotationColumnName}")
</#if>
<#elseif field.fill??>
</#if>
<#if field.versionField || field.logicDeleteField>
<#else>
private ${field.propertyType} ${field.propertyName};
</#if>
</#list>
<#------------ END 字段循环遍历 ---------->
<#if !entityLombokModel>
<#list table.fields as field>
<#if field.propertyType == "boolean">
<#assign getprefix="is"/>
<#else>
<#assign getprefix="get"/>
</#if>
public ${field.propertyType} ${getprefix}${field.capitalName}() {
return ${field.propertyName};
}
<#if chainModel>
public ${entity} set${field.capitalName}(${field.propertyType} ${field.propertyName}) {
<#else>
public void set${field.capitalName}(${field.propertyType} ${field.propertyName}) {
</#if>
this.${field.propertyName} = ${field.propertyName};
<#if chainModel>
return this;
</#if>
}
</#list>
</#if>
<#if entityColumnConstant>
<#list table.fields as field>
public static final String ${field.name?upper_case} = "${field.name}";
</#list>
</#if>
<#if activeRecord>
@Override
public Serializable pkVal() {
<#if keyPropertyName??>
return this.${keyPropertyName};
<#else>
return null;
</#if>
}
</#if>
<#if !entityLombokModel>
@Override
public String toString() {
return "${entity}{" +
<#list table.fields as field>
<#if field_index==0>
"${field.propertyName} = " + ${field.propertyName} +
<#else>
", ${field.propertyName} = " + ${field.propertyName} +
</#if>
</#list>
"}";
}
</#if>
}
controller.java.ftl
package ${package.Controller};
import org.springframework.web.bind.annotation.*;
<#if restControllerStyle>
import org.springframework.web.bind.annotation.RestController;
<#else>
import org.springframework.stereotype.Controller;
</#if>
<#if superControllerClassPackage??>
import ${superControllerClassPackage};
</#if>
<#if swagger>
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
</#if>
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import lombok.RequiredArgsConstructor;
import javax.validation.Valid;
import ${package.Parent}.aop.EnableLog;
import ${package.Parent}.pojo.query.${entity}Query;
import ${package.Parent}.pojo.dto.${entity}DTO;
import ${package.Parent}.pojo.vo.${entity}VO;
import ${package.Parent}.base.Result;
import ${package.Service}.${table.serviceName};
import java.util.List;
/**
* <p>
* ${table.comment!} 前端控制器
* </p>
*
* @author ${author}
* @since ${date}
*/
<#if swagger>
@Api(value = "${table.comment!} API", tags = "${table.comment!}")
</#if>
@RequiredArgsConstructor
<#if restControllerStyle>
@RestController
<#else>
@Controller
</#if>
@RequestMapping("<#if package.ModuleName?? && package.ModuleName != "">/${package.ModuleName}</#if>/<#if controllerMappingHyphenStyle>${controllerMappingHyphen}<#else>${table.entityPath}</#if>")
<#if kotlin>
class ${table.controllerName}<#if superControllerClass??> : ${superControllerClass}()</#if>
<#else>
<#if superControllerClass??>
public class ${table.controllerName} extends ${superControllerClass} {
<#else>
public class ${table.controllerName} {
</#if>
private final ${table.serviceName} service;
<#if swagger>
@ApiOperation("新增 ${table.comment!}")
<#else>
/**
* 新增 ${table.comment!}
*
* @param dto 参数
*/
</#if>
@PostMapping
@EnableLog("新增 ${table.comment!}")
public Result<Void> add${entity}(@Valid @RequestBody ${entity}DTO dto) {
service.add${entity}(dto);
return Result.success();
}
<#if swagger>
@ApiOperation("修改 ${table.comment!}")
<#else>
/**
* 修改 ${table.comment!}
*
* @param id 主键
* @param dto 参数
*/
</#if>
@PutMapping("/{id}")
@EnableLog("修改 ${table.comment!}")
public Result<Void> modify${entity}(@PathVariable Long id, @Valid @RequestBody ${entity}DTO dto) {
dto.setId(id);
service.modify${entity}(dto);
return Result.success();
}
<#if swagger>
@ApiOperation("删除 ${table.comment!}")
<#else>
/**
* 删除 ${table.comment!}
*
* @param id 主键
*/
</#if>
@DeleteMapping("/{id}")
@EnableLog("删除 ${table.comment!}")
public Result<Void> delete${entity}(@PathVariable Long id) {
service.delete${entity}(id);
return Result.success();
}
<#if swagger>
@ApiOperation("根据id获取 ${table.comment!} 详情")
<#else>
/**
* 根据id获取 ${table.comment!} 详情
*
* @param id 主键
*/
</#if>
@GetMapping("/{id}")
@EnableLog("根据id获取 ${table.comment!} 详情")
public Result<${entity}VO> query${entity}ById(@PathVariable Long id) {
${entity}VO vo = service.query${entity}ById(id);
return Result.success(vo);
}
<#if swagger>
@ApiOperation("分页查询 ${table.comment!}")
<#else>
/**
* 分页查询 ${table.comment!}
*
* @param dto 参数
* @return
*/
</#if>
@PostMapping("/page")
@EnableLog("分页查询 ${table.comment!} ")
public Result<List<${entity}VO>> pagingList(@Valid @RequestBody ${entity}Query query) {
Page<${entity}VO> page = service.pageList(query);
return Result.from(page);
}
}
</#if>
convert.java.ftl
package ${package.Parent}.component.convert;
import org.mapstruct.Mapper;
import org.mapstruct.factory.Mappers;
import ${package.Entity}.${entity};
import ${package.Parent}.pojo.dto.${entity}DTO;
import ${package.Parent}.pojo.vo.${entity}VO;
import java.util.List;
/**
* <p>
* ${table.comment!} 转换类
* </p>
*
* @author ${author}
* @since ${date}
*/
@Mapper
public interface ${entity}Convert {
${entity}Convert INSTANCE = Mappers.getMapper(${entity}Convert.class);
${entity} toEntity(${entity}DTO dto);
List<${entity}> toEntities(List<${entity}DTO> dtos);
${entity}VO toVO(${entity} entity);
List<${entity}VO> toVOS(List<${entity}> entities);
}
entity.java.ftl
package ${package.Entity};
<#list table.importPackages as pkg>
import ${pkg};
</#list>
<#if springdoc>
import io.swagger.v3.oas.annotations.media.Schema;
<#elseif swagger>
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
</#if>
<#if entityLombokModel>
import lombok.Getter;
import lombok.Setter;
<#if chainModel>
import lombok.experimental.Accessors;
</#if>
</#if>
/**
* <p>
* ${table.comment!}
* </p>
*
* @author ${author}
* @since ${date}
*/
<#if entityLombokModel>
@Getter
@Setter
<#if chainModel>
@Accessors(chain = true)
</#if>
</#if>
<#if table.convert>
@TableName("${schemaName}${table.name}")
</#if>
<#if springdoc>
@Schema(name = "${entity}", description = "$!{table.comment}")
<#elseif swagger>
@ApiModel(value = "${entity}对象", description = "${table.comment!}")
</#if>
<#if superEntityClass??>
public class ${entity} extends ${superEntityClass}<#if activeRecord><${entity}></#if> {
<#elseif activeRecord>
public class ${entity} extends Model<${entity}> {
<#elseif entitySerialVersionUID>
public class ${entity} implements Serializable {
<#else>
public class ${entity} {
</#if>
<#if entitySerialVersionUID>
private static final long serialVersionUID = 1L;
</#if>
<#-- ---------- BEGIN 字段循环遍历 ---------->
<#list table.fields as field>
<#if field.keyFlag>
<#assign keyPropertyName="${field.propertyName}"/>
</#if>
<#if field.comment!?length gt 0>
<#if springdoc>
@Schema(description = "${field.comment}")
<#elseif swagger>
@ApiModelProperty("${field.comment}")
<#else>
/**
* ${field.comment}
*/
</#if>
</#if>
<#if field.keyFlag>
<#-- 主键 -->
<#if field.keyIdentityFlag>
<#if idType??>
@TableId(value = "${field.annotationColumnName}", type = IdType.${idType})
<#else>
@TableId(value = "${field.annotationColumnName}", type = IdType.AUTO)
</#if>
<#elseif field.convert>
@TableId("${field.annotationColumnName}")
</#if>
<#-- 普通字段 -->
<#elseif field.fill??>
<#-- ----- 存在字段填充设置 ----->
<#if field.convert>
@TableField(value = "${field.annotationColumnName}", fill = FieldFill.${field.fill})
<#else>
@TableField(fill = FieldFill.${field.fill})
</#if>
<#elseif field.convert>
@TableField("${field.annotationColumnName}")
</#if>
<#-- 乐观锁注解 -->
<#if field.versionField>
@Version
</#if>
<#-- 逻辑删除注解 -->
<#if field.logicDeleteField>
@TableLogic
</#if>
private ${field.propertyType} ${field.propertyName};
</#list>
<#------------ END 字段循环遍历 ---------->
<#if !entityLombokModel>
<#list table.fields as field>
<#if field.propertyType == "boolean">
<#assign getprefix="is"/>
<#else>
<#assign getprefix="get"/>
</#if>
public ${field.propertyType} ${getprefix}${field.capitalName}() {
return ${field.propertyName};
}
<#if chainModel>
public ${entity} set${field.capitalName}(${field.propertyType} ${field.propertyName}) {
<#else>
public void set${field.capitalName}(${field.propertyType} ${field.propertyName}) {
</#if>
this.${field.propertyName} = ${field.propertyName};
<#if chainModel>
return this;
</#if>
}
</#list>
</#if>
<#if entityColumnConstant>
<#list table.fields as field>
public static final String ${field.name?upper_case} = "${field.name}";
</#list>
</#if>
<#if activeRecord>
@Override
public Serializable pkVal() {
<#if keyPropertyName??>
return this.${keyPropertyName};
<#else>
return null;
</#if>
}
</#if>
<#if !entityLombokModel>
@Override
public String toString() {
return "${entity}{" +
<#list table.fields as field>
<#if field_index==0>
"${field.propertyName} = " + ${field.propertyName} +
<#else>
", ${field.propertyName} = " + ${field.propertyName} +
</#if>
</#list>
"}";
}
</#if>
}
paramQuery.java.ftl
package ${package.Parent}.pojo.query;
<#if springdoc>
import io.swagger.v3.oas.annotations.media.Schema;
<#elseif swagger>
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
</#if>
<#if entityLombokModel>
import lombok.Getter;
import lombok.Setter;
<#if chainModel>
import lombok.experimental.Accessors;
</#if>
</#if>
import ${package.Parent}.base.BasePageQuery;
/**
* <p>
* ${table.comment!}
* </p>
*
* @author ${author}
* @since ${date}
*/
<#if entityLombokModel>
@Getter
@Setter
<#if chainModel>
@Accessors(chain = true)
</#if>
</#if>
<#if springdoc>
@Schema(name = "${entity}", description = "$!{table.comment}")
<#elseif swagger>
@ApiModel(value = "${entity} 分页参数", description = "${table.comment!}")
</#if>
public class ${entity}Query extends BasePageQuery{
}
service.java.ftl
package ${package.Service};
import ${superServiceClassPackage};
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import ${package.Entity}.${entity};
import ${package.Parent}.pojo.query.${entity}Query;
import ${package.Parent}.pojo.dto.${entity}DTO;
import ${package.Parent}.pojo.vo.${entity}VO;
/**
* <p>
* ${table.comment!} 服务类
* </p>
*
* @author ${author}
* @since ${date}
*/
<#if kotlin>
interface ${table.serviceName} : ${superServiceClass}<${entity}>
<#else>
public interface ${table.serviceName} extends ${superServiceClass}<${entity}> {
/**
* 新增 ${table.comment!}
*
* @param dto 参数
*/
void add${entity}(${entity}DTO dto);
/**
* 修改 ${table.comment!}
*
* @param dto 参数
*/
void modify${entity}(${entity}DTO dto);
/**
* 删除 ${table.comment!}
*
* @param id 主键
*/
void delete${entity}(Long id);
/**
* 根据id获取 ${table.comment!} 详情
*
* @param id 主键
*/
${entity}VO query${entity}ById(Long id);
/**
* 分页查询 ${table.comment!}
*
* @param dto 参数
* @return
*/
Page<${entity}VO> pageList(${entity}Query query);
}
</#if>
serviceImpl.java.ftl
package ${package.ServiceImpl};
import ${package.Entity}.${entity};
import ${package.Mapper}.${table.mapperName};
<#if table.serviceInterface>
import ${package.Service}.${table.serviceName};
</#if>
import ${superServiceImplClassPackage};
import org.springframework.stereotype.Service;
import lombok.AllArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import org.springframework.transaction.annotation.Transactional;
import ${package.Parent}.pojo.query.${entity}Query;
import ${package.Parent}.pojo.dto.${entity}DTO;
import ${package.Parent}.pojo.vo.${entity}VO;
import ${package.Parent}.component.convert.${entity}Convert;
import java.util.List;
/**
* <p>
* ${table.comment!} 服务实现类
* </p>
*
* @author ${author}
* @since ${date}
*/
@Slf4j
@Service
@AllArgsConstructor
<#if kotlin>
open class ${table.serviceImplName} : ${superServiceImplClass}<${table.mapperName}, ${entity}>()<#if table.serviceInterface>, ${table.serviceName}</#if> {
}
<#else>
public class ${table.serviceImplName} extends ${superServiceImplClass}<${table.mapperName}, ${entity}><#if table.serviceInterface> implements ${table.serviceName}</#if> {
private final ${entity}Convert INSTANCE = ${entity}Convert.INSTANCE;
/**
* 新增 ${table.comment!}
*
* @param dto 参数
*/
@Override
@Transactional(rollbackFor = Exception.class)
public void add${entity}(${entity}DTO dto){
${entity} entity = INSTANCE.toEntity(dto);
super.save(entity);
}
/**
* 修改 ${table.comment!}
*
* @param dto 参数
*/
@Override
@Transactional(rollbackFor = Exception.class)
public void modify${entity}(${entity}DTO dto){
${entity} entity = INSTANCE.toEntity(dto);
super.updateById(entity);
}
/**
* 删除 ${table.comment!}
*
* @param id 主键
*/
@Override
@Transactional(rollbackFor = Exception.class)
public void delete${entity}(Long id){
super.removeById(id);
}
/**
* 根据id获取 ${table.comment!} 详情
*
* @param id 主键
*/
@Override
public ${entity}VO query${entity}ById(Long id){
${entity} entity = super.getById(id);
return INSTANCE.toVO(entity);
}
/**
* 分页查询 ${table.comment!}
*
* @param dto 参数
* @return
*/
@Override
public Page<${entity}VO> pageList(${entity}Query query) {
Page<${entity}> page = page(new Page<>(query.getPageNum(), query.getPageSize()),
new LambdaQueryWrapper<${entity}>());
List<${entity}VO> resultList = INSTANCE.toVOS(page.getRecords());
return new Page<${entity}VO>().setTotal(page.getTotal()).setRecords(resultList);
}
}
</#if>
生成效果

你知道的越多,你不知道的越多。
魔乐社区(Modelers.cn) 是一个中立、公益的人工智能社区,提供人工智能工具、模型、数据的托管、展示与应用协同服务,为人工智能开发及爱好者搭建开放的学习交流平台。社区通过理事会方式运作,由全产业链共同建设、共同运营、共同享有,推动国产AI生态繁荣发展。
更多推荐

所有评论(0)