说明文档:
属性
$author 设置中的作者 java.lang.String
$modulePath 选中的module路径 java.lang.String
$projectPath 项目绝对路径 java.lang.String
对象
$tableInfo 表对象
obj 表原始对象 com.intellij.database.model.DasTable
name 表名(转换后的首字母大写)java.lang.String
comment 表注释 java.lang.String
fullColumn 所有列 java.util.List
pkColumn 主键列 java.util.List
otherColumn 其他列 java.util.List,除主键以外的列
savePackageName 保存的包名 java.lang.String
savePath 保存路径 java.lang.String
saveModelName 保存的model名称 java.lang.String
columnInfo 列对象
obj 列原始对象 com.intellij.database.model.DasColumn
name 列名(首字母小写) java.lang.String
comment 列注释 java.lang.String
type 列类型(类型全名) java.lang.String
shortType 列类型(短类型) java.lang.String
custom 是否附加列 java.lang.Boolean
ext 附加字段(Map类型) java.lang.Map
$tableInfoList java.util.List所有选中的表
$importList 所有需要导入的包集合 java.util.Set
回调
&callback 回调对象
setFileName(String) 设置文件储存名字
setSavePath(String) 设置文件储存路径,默认使用选中路径
setReformat(Boolean) 设置是否重新格式化生成后的代码,默认为true
工具
$tool
firstUpperCase(String name) 首字母大写方法
firstLowerCase(String name) 首字母小写方法
getClsNameByFullName(String fullName) 通过包全名获取类名
getJavaName(String name) 将下划线分割字符串转驼峰命名(属性名)
getClassName(String name) 将下划线分割字符串转驼峰命名(类名)
hump2Underline(String str) 将驼峰字符串转下划线字符串
append(Object... objs) 多个数据进行拼接
newHashSet(Object... objs) 创建一个HashSet对象
newArrayList(Object... objs) 创建一个ArrayList对象
newLinkedHashMap() 创建一个LinkedHashMap()对象
newHashMap() 创建一个HashMap()对象
getField(Object obj, String fieldName) 获取对象的属性值,可以访问任意修饰符修饰的属性.配合debug方法使用.
call(Object... objs) 空白执行方法,用于调用某些方法时消除返回值
debug(Object obj) 调式方法,用于查询对象结构.可查看对象所有属性与public方法
serial() 随机获取序列化的UID
service(String serviceName, Object... param)远程服务调用
parseJson(String) 将字符串转Map对象
toJson(Object, Boolean) 将对象转json对象,Boolean:是否格式化json,不填时为不格式化。
toUnicode(String, Boolean) 将String转换为unicode形式,Boolean:是否转换所有符号,不填时只转换中文及中文符号。
$time
currTime(String format) 获取当前时间,指定时间格式(默认:yyyy-MM-dd HH:mm:ss)
$generateService
run(String, Map) 代码生成服务,参数1:模板名称,参数2:附加参数。
$dasUtil Database提供的工具类,具体可方法请查看源码,适用于高端玩家
$dbUtil Database提供的工具类,具体可方法请查看源码,适用于高端玩家
写法:
#if(xxx)
内容1
#elseif(xxx)
内容2
#else
内容3
#end
示例:
#if(${column.type}=="1")
等于0
#elseif(${column.type}=="2")
等于2
#else
等于其他
#end
声明写法:
#set($自定义名称=自定义内容)
声明示例:
$tableInfo.name 就是表名(但是默认首字母大写)
##示例1
## 定义实体对象名 假如是(User) tool.firstLowerCase是让第一个字母变成小写所以这里是 user
#set($entityName = $!tool.firstLowerCase($!tableInfo.name))
##示例2
#set($demo = "123")
引用示例
## 引用 $xx 效果是 user
$entityName
## 引用 $xx 效果是 123
$demo
语法:
#foreach($column in XX)
内容
#end
声明示例:
$tableInfo 表对象
fullColumn 所有列 java.util.List
#foreach($column in $tableInfo.fullColumn)
#if(${column.name}=="id")
进入表字段为id
#end
#end
修改了entity的构造方法为lombok
增加了swagger2的通用模板
修改了部分细节(如controller的ResquestMapper请求映射全部变成小写并且使用#set声明对象)
##导入宏定义
$!define
##保存文件(宏定义)
#save("/entity", ".java")
##包路径(宏定义)
#setPackageSuffix("entity")
##自动导入包(全局变量)
$!autoImport
import com.baomidou.mybatisplus.extension.activerecord.Model;
import java.io.Serializable;
import lombok.Data;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.EqualsAndHashCode;
import com.fasterxml.jackson.annotation.JsonFormat;
##表注释(宏定义)
#tableComment("表实体类")
@EqualsAndHashCode(callSuper = true)
@ApiModel("$tableInfo.comment")
@Data
@SuppressWarnings("serial")
public class $!{tableInfo.name} extends Model<$!{tableInfo.name}> {
#foreach($column in $tableInfo.fullColumn)
#if(${column.comment})//${column.comment}#end
@ApiModelProperty("$column.comment")
#if(${column.type}=="java.util.Date")
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
private $!{tool.getClsNameByFullName($column.type)} $!{column.name};
#end
#if(${column.type}!="java.util.Date")
private $!{tool.getClsNameByFullName($column.type)} $!{column.name};
#end
#end
#foreach($column in $tableInfo.pkColumn)
/**
* 获取主键值
*
* @return 主键值
*/
@Override
protected Serializable pkVal() {
return this.$!column.name;
}
#break
#end
}
##导入宏定义
$!define
##设置表后缀(宏定义)
#setTableSuffix("Dao")
##保存文件(宏定义)
#save("/mapper", "Dao.java")
##包路径(宏定义)
#setPackageSuffix("mapper")
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import $!{tableInfo.savePackageName}.entity.$!tableInfo.name;
##表注释(宏定义)
#tableComment("表数据库访问层")
public interface $!{tableName} extends BaseMapper<$!tableInfo.name> {
}
##导入宏定义
$!define
##设置表后缀(宏定义)
#setTableSuffix("Service")
##保存文件(宏定义)
#save("/service", "Service.java")
##包路径(宏定义)
#setPackageSuffix("service")
import com.baomidou.mybatisplus.extension.service.IService;
import $!{tableInfo.savePackageName}.entity.$!tableInfo.name;
##表注释(宏定义)
#tableComment("表服务接口")
public interface $!{tableName} extends IService<$!tableInfo.name> {
}
##导入宏定义
$!define
##设置表后缀(宏定义)
#setTableSuffix("ServiceImpl")
##保存文件(宏定义)
#save("/service/impl", "ServiceImpl.java")
##包路径(宏定义)
#setPackageSuffix("service.impl")
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import $!{tableInfo.savePackageName}.mapper.$!{tableInfo.name}Dao;
import $!{tableInfo.savePackageName}.entity.$!{tableInfo.name};
import $!{tableInfo.savePackageName}.service.$!{tableInfo.name}Service;
import org.springframework.stereotype.Service;
##表注释(宏定义)
#tableComment("表服务实现类")
@Service("$!tool.firstLowerCase($tableInfo.name)Service")
public class $!{tableName} extends ServiceImpl<$!{tableInfo.name}Dao, $!{tableInfo.name}> implements $!{tableInfo.name}Service {
}
##导入宏定义
$!define
##设置表后缀(宏定义)
#setTableSuffix("Controller")
##保存文件(宏定义)
#save("/controller", "Controller.java")
##包路径(宏定义)
#setPackageSuffix("controller")
##定义服务名
#set($serviceName = $!tool.append($!tool.firstLowerCase($!tableInfo.name), "Service"))
##定义实体对象名
#set($entityName = $!tool.firstLowerCase($!tableInfo.name))
## springmvc的映射 --》 RequestMapping
#set($mvcs = $!{tableInfo.savePackageName.substring($!{tableInfo.savePackageName.lastIndexOf(".")}).replace(".", "/")})
## 截取掉第一个字符 将英文变成小写
## #set($httpmvc="$mvcs/$entityName.substring(1).toLowerCase()")
#set($httpmvc="$mvcs/$entityName")
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.mbit.common.core.controller.BaseController;
import com.mbit.common.core.domain.RestResult;
import com.mbit.common.core.page.TableDataInfo;
import com.mbit.common.enums.BusinessType;
import com.mbit.common.annotation.Log;
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 org.springframework.beans.factory.annotation.Autowired;
import io.swagger.annotations.ApiImplicitParam;
import io.swagger.annotations.ApiImplicitParams;
import java.io.Serializable;
import java.util.List;
##表注释(宏定义)
#tableComment("表控制层")
@Api(tags = "$!{tableInfo.comment}($!entityName)" , value = "$!{tableInfo.comment}($!{tableInfo.name})")
@RestController
## @RequestMapping("/$!tool.firstLowerCase($!tableInfo.name)")
@RequestMapping("${httpmvc}")
public class $!{tableName} extends BaseController {
/**
* 服务对象
*/
@Autowired
private $!{tableInfo.name}Service $!{serviceName};
/**
* 分页查询所有数据
*
* @param $!entityName 查询实体
* @return 所有数据
*/
@ApiOperation(value = "分页查询所有数据 @author ",notes="$!{tableInfo.comment}")
@GetMapping("/list")
public TableDataInfo selectAll($!tableInfo.name $!entityName) {
startPage();
List<$!tableInfo.name> list = this.$!{serviceName}.list(new QueryWrapper<>($!entityName));
return getDataTable(list);
}
/**
* 通过主键查询单条数据
*
* @param id 主键
* @return 单条数据
*/
@ApiOperation(value = "通过主键查询单条数据 @author ")
@GetMapping("/{id}")
public RestResult<$!{tableInfo.name}> selectOne(@PathVariable Serializable id) {
return RestResult.success(this.$!{serviceName}.getById(id));
}
/**
* 新增数据
*
* @param $!entityName 实体对象
* @return 新增结果
*/
@ApiOperation(value = "新增数据 $!{tableInfo.comment} @author ")
@ApiImplicitParams({
#foreach($column in $tableInfo.fullColumn)
#if(${column.name}!="id")@ApiImplicitParam(name = "$column.name", value = "$column.comment", dataType = "$column.type", paramType = "query"),
#end
#end
})
@PostMapping("/save")
@Log(title = "新增数据", businessType = BusinessType.INSERT)
public RestResult insert(@RequestBody $!tableInfo.name $!entityName) {
return toRestResult(this.$!{serviceName}.save($!entityName));
}
/**
* 修改数据
*
* @param $!entityName 实体对象
* @return 修改结果
*/
@ApiOperation(value = "修改数据 @author ")
@ApiImplicitParams({
#foreach($column in $tableInfo.fullColumn)
@ApiImplicitParam(name = "$column.name", value = "$column.comment", dataType = "$column.type", paramType = "query"),
#end
})
@PutMapping("/update")
@Log(title = "修改数据", businessType = BusinessType.UPDATE)
public RestResult update(@RequestBody $!tableInfo.name $!entityName) {
return toRestResult(this.$!{serviceName}.updateById($!entityName));
}
/**
* 删除数据
*
* @param id 主键结合
* @return 删除结果
*/
@ApiOperation(value = "删除数据 @author ")
@DeleteMapping("/{id}")
@Log(title = "删除数据", businessType = BusinessType.DELETE)
public RestResult delete(@PathVariable Integer id) {
return toRestResult(this.$!{serviceName}.removeById(id));
}
}
##引入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}.dao.$!{tableInfo.name}Dao">
<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>
</mapper>