entity模板
##引入宏定义
## 去掉t_表前缀
$!init
$!define
##使用宏定义设置回调(保存位置与文件后缀)
#save("/entity", ".java")
##使用宏定义设置包后缀
#setPackageSuffix("entity")
##拿到主键
#if(!$tableInfo.pkColumn.isEmpty())
#set($pk = $tableInfo.pkColumn.get(0).name)
#end
import $!{tableInfo.savePackageName}.util.QueryRequest;
##使用全局变量实现默认包导入
$!autoImport
import java.io.Serializable;
import io.swagger.annotations.*;
import lombok.Data;
import javax.persistence.Id;
import javax.persistence.Table;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
##使用宏定义实现类注释信息
#tableComment("实体类")
@Data
@Table(name = "$!tableInfo.obj.name")
@ApiModel("$tableInfo.comment")
public class $!{tableInfo.name} extends QueryRequest implements Serializable {
private static final long serialVersionUID = $!tool.serial();
#foreach($column in $tableInfo.fullColumn)
#if(${column.comment})/**
* ${column.comment}
*/#end
##给主键标识和新增返回主键
#if(${column.name.equals($pk)})
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)#end
@ApiModelProperty("$column.comment")
private $!{tool.getClsNameByFullName($column.type)} $!{column.name};
#end
}
dao.mapper
## 去掉t_表前缀
$!init
##定义初始变量
#set($tableName = $tool.append($tableInfo.name, "Mapper"))
##设置回调
$!callback.setFileName($tool.append($tableName, ".java"))
$!callback.setSavePath($tool.append($tableInfo.savePath, "/dao/mapper"))
##拿到主键
#if(!$tableInfo.pkColumn.isEmpty())
#set($pk = $tableInfo.pkColumn.get(0))
#end
#if($tableInfo.savePackageName)package $!{tableInfo.savePackageName}.#{end}dao.mapper;
import $!{tableInfo.savePackageName}.base.TkBaseMapper;
import $!{tableInfo.savePackageName}.entity.$!{tableInfo.name};
/**
* $!{tableInfo.comment}($!{tableInfo.name})表数据库访问层
*
* @author $!author
* @since $!time.currTime()
*/
public interface $!{tableName} extends TkBaseMapper<$!{tableInfo.name}> {
}
service模板
## 去掉t_表前缀
$!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 $!{tableInfo.savePackageName}.entity.$!{tableInfo.name};
import java.util.List;
/**
* $!{tableInfo.comment}($!{tableInfo.name})表服务实现类
*
* @author $!author
* @since $!time.currTime()
*/
public interface $!{tableName} {
/**
* 保存数据
*
* @param userId 用户ID
* @param $!tool.firstLowerCase($!{tableInfo.name}) 实例对象
* @return 是否成功
*/
int save(Integer userId, $!{tableInfo.name} $!tool.firstLowerCase($!{tableInfo.name}));
/**
* 新增数据
*
* @param userId 用户ID
* @param $!tool.firstLowerCase($!{tableInfo.name}) 实例对象
* @return 是否成功
*/
int insert(Integer userId, $!{tableInfo.name} $!tool.firstLowerCase($!{tableInfo.name}));
/**
* 通过主键删除数据
*
* @param userId 用户ID
* @param $!pk.name 主键
* @return 是否成功
*/
int delete(Integer userId, $!pk.shortType $!pk.name);
/**
* 修改数据
*
* @param $!tool.firstLowerCase($!{tableInfo.name}) 实例对象
* @return 是否成功
*/
int update($!{tableInfo.name} $!tool.firstLowerCase($!{tableInfo.name}));
/**
* 通过ID查询单条数据
*
* @param $!pk.name 主键
* @return 实例对象
*/
$!{tableInfo.name} queryById($!pk.shortType $!pk.name);
/**
* 查询多条数据
*
* @param userId 用户ID
* @param $!tool.firstLowerCase($!{tableInfo.name}) 查询条数
* @return 对象列表
*/
PageWrapper<$!{tableInfo.name}> list(Integer userId, $!{tableInfo.name} $!tool.firstLowerCase($!{tableInfo.name}));
}
serviceImpl.java
## 去掉t_表前缀
$!init
##定义初始变量
#set($tableName = $tool.append($tableInfo.name, "ServiceImpl"))
##设置回调
$!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
##拿到createBy其它
#if(!$tableInfo.otherColumn.isEmpty())
#foreach($column in $tableInfo.otherColumn)
#if($column.name.equals("createBy"))
#set($createBy = $column.name)
#end
#if($column.name.equals("updateBy"))
#set($updateBy = $column.name)
#end
#if($column.name.equals("updateTime"))
#set($updateTime = $column.name)
#end
#if($column.name.equals("flag"))
#set($flag = $column.name)
#end
#end
#end
## 截取对象名的第一个字符串
#set($length1 = $tool.firstLowerCase($!{tableInfo.name}).substring(0, 1))
#if($tableInfo.savePackageName)package $!{tableInfo.savePackageName}.#{end}service.impl;
import $!{tableInfo.savePackageName}.entity.$!{tableInfo.name};
import $!{tableInfo.savePackageName}.enums.DataEnum;
import $!{tableInfo.savePackageName}.dao.mapper.$!{tableInfo.name}Mapper;
import $!{tableInfo.savePackageName}.service.$!{tableInfo.name}Service;
import org.springframework.stereotype.Service;
import java.util.Date;
import com.github.pagehelper.PageHelper;
import com.github.pagehelper.PageInfo;
import javax.annotation.Resource;
import java.util.List;
/**
* $!{tableInfo.comment}($!{tableInfo.name})表服务实现类
*
* @author $!author
* @since $!time.currTime()
*/
@Service("$!tool.firstLowerCase($!{tableInfo.name})Service")
public class $!{tableName} implements $!{tableInfo.name}Service {
/**
* 服务对象
*/
@Resource
private $!{tableInfo.name}Mapper $!tool.firstLowerCase($!{tableInfo.name})Mapper;
/**
* 保存数据
*
* @param userId 用户ID
* @param $!tool.firstLowerCase($!{tableInfo.name}) 实例对象
* @return 是否成功
*/
@Override
public int save(Integer userId, $!{tableInfo.name} $!tool.firstLowerCase($!{tableInfo.name})) {
if($!{tool.firstLowerCase($!{tableInfo.name})}.get$!{tool.firstUpperCase($!{pk.name})}() == null){
return insert(userId, $!tool.firstLowerCase($!{tableInfo.name}));
} else {
return update(userId,$!tool.firstLowerCase($!{tableInfo.name}));
}
}
/**
* 新增数据
*
* @param userId 用户ID
* @param $!tool.firstLowerCase($!{tableInfo.name}) 实例对象
* @return 是否成功
*/
@Override
public int insert(Integer userId, $!{tableInfo.name} $!tool.firstLowerCase($!{tableInfo.name})) {
$!{tool.firstLowerCase($!{tableInfo.name})}.set$!{tool.firstUpperCase($!{createBy})}(userId);
return $!{tool.firstLowerCase($!{tableInfo.name})}Mapper.insertSelective($!tool.firstLowerCase($!{tableInfo.name}));
}
/**
* 通过主键删除数据
*
* @param userId 用户ID
* @param $!pk.name 主键
* @return 是否成功
*/
@Override
public int delete(Integer userId, $!pk.shortType $!pk.name) {
$!{tableInfo.name} $!tool.firstLowerCase($!{tableInfo.name}) = $!{tool.firstLowerCase($!{tableInfo.name})}Mapper.selectByPrimaryKey($!pk.name);
$!{tool.firstLowerCase($!{tableInfo.name})}.set$!{tool.firstUpperCase($!{updateBy})}(userId);
$!{tool.firstLowerCase($!{tableInfo.name})}.set$!{tool.firstUpperCase($!{updateTime})}(new Date());
$!{tool.firstLowerCase($!{tableInfo.name})}.set$!{tool.firstUpperCase($!{flag})}(DataEnum.FLAG_STATUS_INVALID.getCode());
return $!{tool.firstLowerCase($!{tableInfo.name})}Mapper.updateByPrimaryKeySelective($!tool.firstLowerCase($!{tableInfo.name}));
}
/**
* 修改数据
*
* @param $!tool.firstLowerCase($!{tableInfo.name}) 实例对象
* @return 是否成功
*/
@Override
public int update(Integer userId, $!{tableInfo.name} $!tool.firstLowerCase($!{tableInfo.name})){
$!{tableInfo.name} $!{length1} = $!{tool.firstLowerCase($!{tableInfo.name})}Mapper.selectByPrimaryKey($!{tool.firstLowerCase($!{tableInfo.name})}.get$!{tool.firstUpperCase($!{pk.name})}());
// FIXME 待完善
return $!{tool.firstLowerCase($!{tableInfo.name})}Mapper.updateByPrimaryKeySelective($!{length1});
}
/**
* 通过ID查询单条数据
*
* @param $!pk.name 主键
* @return 实例对象
*/
@Override
public Blacklist queryById($!pk.shortType $!pk.name){
return $!{tool.firstLowerCase($!{tableInfo.name})}Mapper.selectByPrimaryKey($!pk.name);
}
/**
* 查询多条数据
*
* @param userId 用户ID
* @param $!tool.firstLowerCase($!{tableInfo.name}) 查询条数
* @return 对象列表
*/
@Override
public PageWrapper<$!{tableInfo.name}> list(Integer userId, $!{tableInfo.name} $!tool.firstLowerCase($!{tableInfo.name})) {
PageHelper.startPage($!{tool.firstLowerCase($!{tableInfo.name})}.getPageNum(), $!{tool.firstLowerCase($!{tableInfo.name})}.getPageSize());
$!{tool.firstLowerCase($!{tableInfo.name})}.set$!{tool.firstUpperCase($!{flag})}(DataEnum.FLAG_STATUS_VALID.getCode());
PageInfo<$!{tableInfo.name}> page = new PageInfo<>($!{tool.firstLowerCase($!{tableInfo.name})}Mapper.select($!{tool.firstLowerCase($!{tableInfo.name})}));
PageHelper.clearPage();
return new PageWrapper<>(page);
}
}
controller.java
## 去掉t_表前缀
$!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 org.springframework.web.bind.annotation.*;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import io.swagger.annotations.ApiParam;
import javax.annotation.Resource;
import com.example.dolabor20200513.vo.ResponseHelper;
import com.example.dolabor20200513.vo.ResponseModel;
/**
* $!{tableInfo.comment}($!{tableInfo.name})表控制层
*
* @author $!author
* @since $!time.currTime()
*/
@Api(tags = "$!{tableInfo.comment}($!{tableInfo.name})")
@RestController
@RequestMapping("$!tool.firstLowerCase($tableInfo.name)")
public class $!{tableName} {
/**
* 服务对象
*/
@Resource
private $!{tableInfo.name}Service $!tool.firstLowerCase($tableInfo.name)Service;
/**
* 新增/修改数据
*
* @param userId 用户ID
* @param $!tool.firstLowerCase($!{tableInfo.name}) 实例对象
* @return 是否成功
*/
@PostMapping("save")
@ApiOperation(value = "新增/修改", notes = "新增/修改$!{tableInfo.comment}的一条数据")
@RequiresPermissions(logical = Logical.OR, value = {"$!tool.firstLowerCase($!{tableInfo.name}):insert", "$!tool.firstLowerCase($!{tableInfo.name}):edit"})
public ResponseModel save(@UserId String userId, @RequestBody @Valid $!{tableInfo.name} $!tool.firstLowerCase($!{tableInfo.name})) {
return ResponseHelper.success($!{tool.firstLowerCase($!{tableInfo.name})}Service.save(Integer.valueOf(userId), $!tool.firstLowerCase($!{tableInfo.name})));
}
/**
* 通过主键删除数据
*
* @param userId 用户ID
* @param $!pk.name 主键
* @return 是否成功
*/
@PostMapping("delete")
@ApiOperation(value = "删除", notes = "删除$!{tableInfo.comment}的一条数据")
@RequiresPermissions(logical = Logical.OR, value = {"$!tool.firstLowerCase($!{tableInfo.name}):delete"})
public ResponseModel delete(@UserId String userId, $!pk.shortType $!pk.name) {
return ResponseHelper.success($!{tool.firstLowerCase($!{tableInfo.name})}Service.delete(Integer.valueOf(userId), $!pk.name));
}
/**
* 查询多条数据
*
* @param userId 用户ID
* @param $!tool.firstLowerCase($!{tableInfo.name}) 查询条数
* @return 对象列表
*/
@PostMapping("list")
@ApiOperation(value = "列表", notes = "查询$!{tableInfo.comment}的多条数据")
public ResponseModel list(@UserId String userId, @RequestBody $!{tableInfo.name} $!tool.firstLowerCase($!{tableInfo.name})) {
return ResponseHelper.success($!{tool.firstLowerCase($!{tableInfo.name})}Service.list(Integer.valueOf(userId), $!tool.firstLowerCase($!{tableInfo.name})));
}
}
ResponseModel.java
package com.example.dolabor20200513.vo;
import com.example.dolabor20200513.enums.ResultCode;
import org.springframework.web.context.request.RequestContextHolder;
import org.springframework.web.context.request.ServletRequestAttributes;
import javax.servlet.http.HttpServletResponse;
import java.io.Serializable;
/**
* @author pc
* 统一返回相应参数实体类
*/
public class ResponseModel implements Serializable {
private static final long serialVersionUID = -1241360949457314497L;
private T data;
private String message;
private Integer code;
public ResponseModel() {
HttpServletResponse response = ((ServletRequestAttributes) RequestContextHolder.getRequestAttributes())
.getResponse();
response.setCharacterEncoding("UTF-8");
}
public ResponseModel(T data, ResultCode resultCode) {
this.data = data;
this.message = resultCode.getMessage();
this.code = resultCode.getCode();
}
public String getMessage() {
return this.message;
}
public Integer getCode() {
return this.code;
}
public void setCode(Integer code) {
this.code = code;
}
public void setMessage(String message) {
this.message = message;
}
public T getData() {
return this.data;
}
public void setData(T result) {
this.data = result;
}
@Override
public String toString() {
return "ResponseModel [ result=" + this.data + ", message=" + this.message + ", code=" + this.code + "]";
}
}
ResultCode.java
package com.example.dolabor20200513.enums;
import lombok.Getter;
/**
* @author BaoBao
*/
@Getter
public enum ResultCode {
// 请求信息
SUCCESS(10000, "操作成功"),
FAILED(10001, "响应失败"),
VALIDATE_FAILED(10002, "参数校验失败"),
// 账户信息
ACCOUNT_LOCKED(20000, "账号已被禁用,无法登录"),
ACCOUNT_ERROR(20001, "账号或密码错误"),
IDENTIFICATION_ERROR(20002,"身份异常"),
LOGIN_STATE_EXPIRED(2004, "认证失败,请重新登录"),
// 异常信息
NULL_POINTER(10003, "空指针异常"),
IOE_POINTER(10004, "JACKSON取值异常"),
INDEX_OUT_OF_BOUNDS(10004, "索引(下标)越界异常处理"),
SEND_MSG_ERROR(10005, "验证码发送异常"),
// 系统信息
ERROR(50000, "未知错误");
/**
* 请求响应码
*/
private Integer code;
/**
* 请求响应说明
*/
private String message;
ResultCode(int code, String message){
this.code = code;
this.message = message;
}
}
ResponseHelper.java
package com.example.dolabor20200513.vo;
import com.example.dolabor20200513.enums.ResultCode;
import java.io.Serializable;
/**
* 统一返回相应参数
* @author pc
*/
public class ResponseHelper implements Serializable {
/**
* 操作成功默认: code + msg
* @param model
* @param
* @return
*/
public static ResponseModel success(T model) {
return successWith(model, ResultCode.SUCCESS);
}
/**
* 作成功自定义错误: code + msg
* @param t
* @param resultCode
* @param
* @return
*/
public static ResponseModel successWith(T t, ResultCode resultCode) {
return new ResponseModel(t, resultCode);
}
/**
* 操作失败默认: code + msg
* @param model
* @param
* @return
*/
public static ResponseModel failed(T model) {
return failedWith(model, ResultCode.ERROR);
}
/**
* 操作失败自定义错误: code + msg
* @param t
* @param resultCode
* @param
* @return
*/
public static ResponseModel failedWith(T t, ResultCode resultCode) {
return new ResponseModel<>(t, resultCode);
}
}
QueryRequest .java
package com.example.dolabor20200513.util;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import javax.persistence.Transient;
import java.io.Serializable;
/**
* @author pc
*/
@Data
public class QueryRequest implements Serializable {
@Transient
private static final long serialVersionUID = -4869594085374385813L;
@Transient
private int pageSize = 10;
@Transient
private int pageNum = 1;
@ApiModelProperty(name = "userType", value = "访问角色类型")
@Transient
private String userType;
@Transient
private String sortField;
@Transient
private String sortOrder;
}
DeleteDataUtil.java
package com.example.dolabor20200513.util;
import lombok.Getter;
import javax.validation.constraints.NotNull;
/**
* 删除数据专用
* @author pc
*/
@Getter
public class DeleteDataUtil {
@NotNull
private Integer id;
@NotNull
private Integer flag;
}
TkBaseMapper.java
package com.example.dolabor20200513.base;
import tk.mybatis.mapper.common.BaseMapper;
import tk.mybatis.mapper.common.ExampleMapper;
import tk.mybatis.mapper.common.MySqlMapper;
/**
* TK 泛型
* @author pc
* @param
*/
public interface TkBaseMapper extends BaseMapper, ExampleMapper, MySqlMapper {
}