EasyCode mybatis-plus代码生成模板
Entity.java.vm
##引入宏定义
$!{define.vm}
##保存文件(宏定义)
#save("/entity", ".java")
##包路径(宏定义)
#setPackageSuffix("entity")
##自动导入包(全局变量)
$!autoImport
import com.baomidou.mybatisplus.annotation.*;
import com.fasterxml.jackson.annotation.JsonFormat;
import org.springframework.format.annotation.DateTimeFormat;
import lombok.Data;
import java.io.Serializable;
import java.util.Date;
##表注释(宏定义)
#tableComment("")
@Data
@TableName("$!tableInfo.obj.name")
public class $!{tableInfo.name} implements Serializable {
private static final long serialVersionUID = $!tool.serial();
#foreach($column in $tableInfo.fullColumn)
##注释不为空打印注释
#if(${column.comment})
/**
* ${column.comment}
**/
#end
##id字段
#if($!{column.name} == 'id')
@TableId(type = IdType.ASSIGN_ID)
#end
##逻辑删除字段
#if($!{column.name} == 'delFlag')
@TableLogic
#end
##创建时间
#if($!{column.name} == 'createTime')
@TableField(fill = FieldFill.INSERT)
#end
##修改时间
#if($!{column.name} == 'updateTime')
@TableField(fill = FieldFill.INSERT_UPDATE)
#end
#if($!{tool.getClsNameByFullName($column.type).contains('Date')})
@JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd HH:mm:ss")
@DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
#end
## 乐观锁注解
#if($!{column.name} == 'version')
@Version
#end
private $!{tool.getClsNameByFullName($column.type)} $!{column.name};
#end
}
Mapper.java.vm
##引入mybatis支持
$!{mybatisSupport.vm}
##设置保存名称与保存位置
$!callback.setFileName($tool.append($!{tableInfo.name}, "Mapper.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">
<!--公共sql字段-->
<sql id="$!{tableInfo.name}SQL">
#allSqlColumn()
</sql>
<!-- $!{tableInfo.comment}分页查询-->
<select id="page$!{tableInfo.name}List" resultType="$!{tableInfo.savePackageName}.entity.$!{tableInfo.name}">
select
#allSqlColumn()
from $!tableInfo.obj.name
<where>
#foreach($column in $tableInfo.fullColumn)
#if($!{column.name} =='delFlag')
del_flag = 0
#end
#end
#foreach($column in $tableInfo.fullColumn)
##------过滤逻辑删除字段------
#if($!{column.name} != 'delFlag')
<if test="pageQuery.$!column.name != null#if($column.type.equals("java.lang.String")) and pageQuery.$!column.name != ''#end">
#if($column.type.equals("java.lang.String"))
and $!column.obj.name like concat('%',#{pageQuery.$!column.name},'%')
#else
and $!column.obj.name = #{pageQuery.$!column.name}
#end
</if>
##------逻辑删除字段判断结束------
#end
#end
</where>
order BY id DESC
</select>
<!--公共表字段映射关系-->
<resultMap type="$!{tableInfo.savePackageName}.entity.$!{tableInfo.name}" id="$!{tableInfo.name}Map">
#foreach($column in $tableInfo.fullColumn)
<result property="$!column.name" column="$!column.obj.name"/>
#end
</resultMap>
</mapper>
Service.java.vm
##定义设置表名前缀缀的宏定义,调用方式:#setTablePrefix("Test")
#macro(setTablePrefix $prefix)
#set($tableName = $!tool.append($tableInfo.name, $prefix))
#end
##定义直接保存路径与文件名简化的宏定义,调用方式:#save("/entity", ,"前缀",".java")
#macro(prefixSave $path $prefix $fileName)
$!callback.setSavePath($tool.append($tableInfo.savePath, $path))
$!callback.setFileName($tool.append($prefix, $tableInfo.name, $fileName))
#end
##导入宏定义
$!{define.vm}
##设置表后缀(宏定义)
#setTableSuffix("Service")
##保存文件(宏定义)
#prefixSave("/service","I","Service.java")
##包路径(宏定义)
#setPackageSuffix("service")
##定义初始变量
#set($AddParams = $!tool.append($!tableInfo.savePackageName, ".params.", $!tableInfo.name,"AddParams"))
#set($UpdateParams = $!tool.append($!tableInfo.savePackageName, ".params.", $!tableInfo.name,"UpdateParams"))
#set($queryType = $!tool.append($!tableInfo.savePackageName, ".query.", $!tableInfo.name,"Query"))
import $AddParams;
import $UpdateParams;
import $queryType;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.IService;
import $!{tableInfo.savePackageName}.entity.$!tableInfo.name;
##表注释(宏定义)
#tableComment("")
public interface I$!{tableName} extends IService<$!tableInfo.name> {
/**
* $!{tableInfo.comment}分页查询
* @param pageQuery 查询$!{tableInfo.comment}参数
* @return $!{tableInfo.comment}分页列表
*/
Page<${tableInfo.name}ListVO> page${tableInfo.name}List(${tableInfo.name}Query pageQuery);
/**
* 查询$!{tableInfo.comment}详情
*
* @param id 根据id获取详情
* @return $!{tableInfo.comment}详情
*/
${tableInfo.name}DetailsVO get${tableInfo.name}Details(Long id);
/**
* 新增$!{tableInfo.comment}
* @param addParams 新增$!{tableInfo.comment}参数
*/
void addDataByParams(${tableInfo.name}AddParams addParams);
/**
* 修改$!{tableInfo.comment}
* @param updateParams 修改$!{tableInfo.comment}参数
*/
void updateDataByParams(${tableInfo.name}UpdateParams updateParams);
}
ServiceImpl.java.vm
##导入宏定义
$!{define.vm}
##设置表后缀(宏定义)
#setTableSuffix("ServiceImpl")
##保存文件(宏定义)
#save("/service/impl", "ServiceImpl.java")
##包路径(宏定义)
#setPackageSuffix("service.impl")
##定义实体对象名
#set($entityName = $!tool.firstLowerCase($!tableInfo.name))
#set($voType = $!tool.append($!tableInfo.savePackageName, ".vo.", $!tableInfo.name,"VO"))
#set($paramsType = $!tool.append($!tableInfo.savePackageName, ".params.", $!tableInfo.name,"AddOrUpdateParams"))
#set($queryType = $!tool.append($!tableInfo.savePackageName, ".query.", $!tableInfo.name,"Query"))
import $voType;
import $paramsType;
import $queryType;
import $!{tableInfo.savePackageName}.mapper.$!{tableInfo.name}Mapper;
import $!{tableInfo.savePackageName}.entity.$!{tableInfo.name};
import $!{tableInfo.savePackageName}.service.I$!{tableInfo.name}Service;
import cn.hutool.core.bean.BeanUtil;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import org.springframework.stereotype.Service;
##表注释(宏定义)
#tableComment("")
@Service
public class $!{tableName} extends ServiceImpl<$!{tableInfo.name}Mapper, $!{tableInfo.name}>
implements I$!{tableInfo.name}Service {
@Override
public Page<${tableInfo.name}ListVO> page${tableInfo.name}List(${tableInfo.name}Query pageQuery){
Page<${tableInfo.name}> page = baseMapper.page${tableInfo.name}List(new Page<>(pageQuery.getPageNo(), pageQuery.getPageSize()),pageQuery);
return BeanCopyUtils.copyPage(page,${tableInfo.name}ListVO.class);
}
@Override
public ${tableInfo.name}DetailsVO get${tableInfo.name}Details(Long id) {
${tableInfo.name} obj = baseMapper.selectById(id);
return BeanUtil.copyProperties(obj, ${tableInfo.name}VO.class);
}
@Override
public void addDataByParams(${tableInfo.name}AddParams addParams){
baseMapper.insert(BeanCopyUtils.copyNewBean(addParams, $!{tableInfo.name}.class));
}
@Override
public void updateDataByParams(${tableInfo.name}UpdateParams updateParams){
baseMapper.updateById(BeanUtil.copyProperties(updateParams, ${tableInfo.name}.class));
}
}
Controller.java.vm
##导入宏定义
$!{define.vm}
##设置表后缀(宏定义)
#setTableSuffix("Controller")
##保存文件(宏定义)
#save("/controller", "Controller.java")
##包路径(宏定义)
#setPackageSuffix("controller")
##定义服务名
#set($serviceName = $!tool.append($!tool.firstLowerCase($!tableInfo.name), "Service"))
##定义实体对象名
#set($entityName = $!tool.firstLowerCase($!tableInfo.name))
#set($AddParams = $!tool.append($!tableInfo.savePackageName, ".params.", $!tableInfo.name,"AddParams"))
#set($UpdateParams = $!tool.append($!tableInfo.savePackageName, ".params.", $!tableInfo.name,"UpdateParams"))
#set($queryType = $!tool.append($!tableInfo.savePackageName, ".query.", $!tableInfo.name,"Query"))
import $AddParams;
import $UpdateParams;
import $queryType;
import $!{tableInfo.savePackageName}.service.I$!{tableInfo.name}Service;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import org.springframework.web.bind.annotation.*;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import org.jeecg.common.api.vo.Result;
import javax.annotation.Resource;
##表注释(宏定义)
#tableComment("控制器")
@Api(tags = "$tool.append($!{tableInfo.comment},"控制器")")
@RestController
@RequestMapping("/$!tool.firstLowerCase($!tableInfo.name)")
public class $!{tableName} {
@Resource
private I$!{tableInfo.name}Service $!{serviceName};
/**
* $!{tableInfo.comment}分页查询
* @param pageQuery 查询$!{tableInfo.comment}参数
* @return $!{tableInfo.comment}分页列表
*/
@ApiOperation("$!{tableInfo.comment}分页查询")
@GetMapping("/page")
public Result<Page<${tableInfo.name}ListVO>> page${tableInfo.name}List($!{tableInfo.name}Query pageQuery) {
Page<${tableInfo.name}ListVO> pageList = $!{serviceName}.page${tableInfo.name}List(pageQuery);
return Result.OK(pageList);
}
/**
* 查询$!{tableInfo.comment}详情
*
* @param id 根据id获取详情
* @return $!{tableInfo.comment}详情
*/
@ApiOperation("查询$!{tableInfo.comment}详情")
@GetMapping("/details/{id}")
public Result<${tableInfo.name}DetailsVO> get${tableInfo.name}Details(@PathVariable("id")Long id) {
${tableInfo.name}DetailsVO details = $!{serviceName}.get${tableInfo.name}Details(id);
return Result.OK(details);
}
/**
* 新增 $!{tableInfo.comment}
*
* @param addParams 新增 $!{tableInfo.comment}参数
*/
@ApiOperation("新增$!{tableInfo.comment}")
@PostMapping("/add")
public Result<?> addDataByParams(@RequestBody $!{tableInfo.name}AddParams addParams) {
$!{serviceName}.addDataByParams(addParams);
return Result.OK();
}
/**
* 修改 $!{tableInfo.comment}
* @param updateParams 修改 $!{tableInfo.comment}参数
*/
@ApiOperation("修改$!{tableInfo.comment}")
@PutMapping("/edit")
public Result<?> updateDataByParams(@RequestBody $!{tableInfo.name}UpdateParams updateParams) {
$!{serviceName}.updateDataByParams(updateParams);
return Result.OK();
}
/**
* 删除 $!{tableInfo.comment}
* @param id 根据id删除
*/
@ApiOperation("根据id删除$!{tableInfo.comment}")
@DeleteMapping("/del/{id}")
public Result<?> deleteById(@PathVariable("id")Long id) {
$!{serviceName}.removeById(id);
return Result.OK();
}
}
mapper.xml.vm
##引入mybatis支持
$!{mybatisSupport.vm}
##设置保存名称与保存位置
$!callback.setFileName($tool.append($!{tableInfo.name}, "Mapper.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">
<!--公共sql字段-->
<sql id="$!{tableInfo.name}SQL">
#allSqlColumn()
</sql>
<!-- $!{tableInfo.comment}分页查询-->
<select id="page$!{tableInfo.name}List" resultType="$!{tableInfo.savePackageName}.entity.$!{tableInfo.name}">
select
#allSqlColumn()
from $!tableInfo.obj.name
<where>
#foreach($column in $tableInfo.fullColumn)
#if($!{column.name} =='delFlag')
del_flag = 0
#end
#end
#foreach($column in $tableInfo.fullColumn)
##------过滤逻辑删除字段------
#if($!{column.name} != 'delFlag')
<if test="pageQuery.$!column.name != null#if($column.type.equals("java.lang.String")) and pageQuery.$!column.name != ''#end">
#if($column.type.equals("java.lang.String"))
and $!column.obj.name like concat('%',#{pageQuery.$!column.name},'%')
#else
and $!column.obj.name = #{pageQuery.$!column.name}
#end
</if>
##------逻辑删除字段判断结束------
#end
#end
</where>
order BY id DESC
</select>
<!--公共表字段映射关系-->
<resultMap type="$!{tableInfo.savePackageName}.entity.$!{tableInfo.name}" id="$!{tableInfo.name}Map">
#foreach($column in $tableInfo.fullColumn)
<result property="$!column.name" column="$!column.obj.name"/>
#end
</resultMap>
</mapper>
Query.java.vm
##导入宏定义
$!{define.vm}
##保存文件(宏定义)
#save("/query", "Query.java")
##设置表后缀(宏定义)
#setTableSuffix("Query")
##包路径(宏定义)
#setPackageSuffix("query")
##自动导入包(全局变量)
$!autoImport
import lombok.Data;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import java.util.Date;
##表注释(宏定义)
#tableComment("")
@Data
@ApiModel(value = "$!{tableName}",description = "$tool.append($!{tableInfo.comment},"条件查询请求参数")")
public class $!{tableName}{
/**
* 页数
*/
@ApiModelProperty(value = "页数", example = "1")
private int pageNo = 0;
/**
* 一页返回的数据
*/
@ApiModelProperty(value = "一页返回的数据", example = "10")
private int pageSize = 10;
#foreach($column in $tableInfo.fullColumn)
##------跳过字段------
#if($!{column.name} != 'delFlag')
##注释不为空打印注释
#if(${column.comment})
/**
* ${column.comment}
*/
#end
##时间格式
#if($!{tool.getClsNameByFullName($column.type).contains('Date')})
@JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd")
@DateTimeFormat(pattern = "yyyy-MM-dd")
#end
@ApiModelProperty("$!{column.comment}")
private $!{tool.getClsNameByFullName($column.type)} $!{column.name};
##------跳过字段判断结束------
#end
##------循环结束------
#end
}
AddParams.java.vm
##导入宏定义
$!{define.vm}
##保存文件(宏定义)
#save("/params", "AddParams.java")
##设置表后缀(宏定义)
#setTableSuffix("AddParams")
##包路径(宏定义)
#setPackageSuffix("params")
##自动导入包(全局变量)
$!autoImport
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import java.util.Date;
##表注释(宏定义)
#tableComment("")
@Data
@ApiModel(value = "$!{tableName}",description = "$tool.append($!{tableInfo.comment},"请求参数")")
public class $!{tableName}{
#foreach($column in $tableInfo.fullColumn)
##跳过字段
#if($!{column.name} != 'id'&&$!{column.name} != 'delFlag'&&$!{column.name} != 'createTime'&&$!{column.name} != 'updateTime'&&$!{column.name} != 'createBy'&&$!{column.name} != 'updateBy')
##注释不为空打印注释
#if(${column.comment})
/**
* ${column.comment}
**/
#end
##时间格式
#if($!{tool.getClsNameByFullName($column.type).contains('Date')})
@JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd HH:mm:ss")
@DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
#end
@ApiModelProperty("$!{column.comment}")
private $!{tool.getClsNameByFullName($column.type)} $!{column.name};
##------跳过字段判断结束------
#end
##------循环结束------
#end
}
UpdateParams.java.vm
##导入宏定义
$!{define.vm}
##保存文件(宏定义)
#save("/params", "UpdateParams.java")
##设置表后缀(宏定义)
#setTableSuffix("UpdateParams")
##包路径(宏定义)
#setPackageSuffix("params")
##自动导入包(全局变量)
$!autoImport
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import javax.validation.constraints.NotNull;
import javax.validation.constraints.Null;
import java.util.Date;
##表注释(宏定义)
#tableComment("")
@Data
@ApiModel(value = "$!{tableName}",description = "$tool.append($!{tableInfo.comment},"请求参数")")
public class $!{tableName}{
#foreach($column in $tableInfo.fullColumn)
##跳过字段
#if($!{column.name} != 'delFlag'&&$!{column.name} != 'createTime'&&$!{column.name} != 'updateTime'&&$!{column.name} != 'createBy'&&$!{column.name} != 'updateBy')
##注释不为空打印注释
#if(${column.comment})
/**
* ${column.comment}
**/
#end
#if($!{column.name} == 'id')
@NotNull(message = "修改唯一ID不能为空")
#end
##时间格式
#if($!{tool.getClsNameByFullName($column.type).contains('Date')})
@JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd HH:mm:ss")
@DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
#end
@ApiModelProperty("$!{column.comment}")
private $!{tool.getClsNameByFullName($column.type)} $!{column.name};
##------跳过字段判断结束------
#end
##------循环结束------
#end
}
ListVO.java.vm
##导入宏定义
$!{define.vm}
##保存文件(宏定义)
#save("/vo", "ListVO.java")
##设置表后缀(宏定义)
#setTableSuffix("ListVO")
##包路径(宏定义)
#setPackageSuffix("vo")
##自动导入包(全局变量)
$!autoImport
import com.fasterxml.jackson.annotation.JsonFormat;
import org.springframework.format.annotation.DateTimeFormat;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import java.util.Date;
##表注释(宏定义)
#tableComment("")
@Data
@ApiModel(value = "$!{tableName}",description = "$tool.append($!{tableInfo.comment},"响应参数")")
public class $!{tableName}{
#foreach($column in $tableInfo.fullColumn)
##跳过字段
#if($!{column.name} != 'delFlag')
##注释不为空打印注释
#if(${column.comment})
/**
* ${column.comment}
**/
#end
##时间格式
#if($!{tool.getClsNameByFullName($column.type).contains('Date')})
@JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd HH:mm:ss")
@DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
#end
@ApiModelProperty("${column.comment}")
private $!{tool.getClsNameByFullName($column.type)} $!{column.name};
##------跳过字段判断结束------
#end
##------循环结束------
#end
}
DetailsVO.java.vm
##导入宏定义
$!{define.vm}
##保存文件(宏定义)
#save("/vo", "DetailsVO.java")
##设置表后缀(宏定义)
#setTableSuffix("DetailsVO")
##包路径(宏定义)
#setPackageSuffix("vo")
##自动导入包(全局变量)
$!autoImport
import com.fasterxml.jackson.annotation.JsonFormat;
import org.springframework.format.annotation.DateTimeFormat;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import java.util.Date;
##表注释(宏定义)
#tableComment("")
@Data
@ApiModel(value = "$!{tableName}",description = "$tool.append($!{tableInfo.comment},"响应参数")")
public class $!{tableName}{
#foreach($column in $tableInfo.fullColumn)
##跳过字段
#if($!{column.name} != 'delFlag')
##注释不为空打印注释
#if(${column.comment})
/**
* ${column.comment}
**/
#end
##时间格式
#if($!{tool.getClsNameByFullName($column.type).contains('Date')})
@JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd HH:mm:ss")
@DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
#end
@ApiModelProperty("${column.comment}")
private $!{tool.getClsNameByFullName($column.type)} $!{column.name};
##------跳过字段判断结束------
#end
##------循环结束------
#end
}