语法

  • ## 是模板的注释,不会生成
  • # 全局的一些设置
  • $ 使用库函数或者调用全局定义的内容

常用方法

  • 数据库表信息 ${tableInfo}

    • comment 表备注
    • name 表名
    • fullColumn 所有列
      • comment 列备注
      • name 列名称
      • type 列类型
    • pkColumn 主键列
    • otherColumn 其他列

常用功能

  • 循环
#foreach($column in $tableInfo.fullColumn)
#end
  • 判断,是否包含字符串
#if($!{tool.getClsNameByFullName($column.type).contains('Date')})
#end
  • 小写转换,把第一个字母转换为小写
$!tool.firstLowerCase($!tableInfo.name)

示例

controller 自定义函数比较多,需要按照需要重写,前端也是可以生成的,通用性很差,根据实际情况生成

entity

##导入宏定义
$!define ##保存文件(宏定义)
#save("/entity", ".java") ##包路径(宏定义)
#setPackageSuffix("entity") ##自动导入包(全局变量)
$!autoImport
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import java.io.Serializable;
import lombok.Data; import com.baomidou.mybatisplus.annotation.IdType; ##表注释(宏定义)
#tableComment("表实体类")
@Data
@TableName
public class $!{tableInfo.name} implements Serializable { private static final long serialVersionUID = -1;
/**
* 自增 => @TableId(type = IdType.AUTO)
*/
#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

##导入宏定义
$!define ##设置表后缀(宏定义)
#setTableSuffix("Mapper") ##保存文件(宏定义)
#save("/mapper", "Mapper.java") ##包路径(宏定义)
#setPackageSuffix("mapper") $!autoImport import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import org.apache.ibatis.annotations.Mapper;
import $!{tableInfo.savePackageName}.entity.$!tableInfo.name; ##表注释(宏定义)
#tableComment("表数据库访问层")
@Mapper
public interface $!{tableName} extends BaseMapper<$!tableInfo.name> { }

service

##导入宏定义
$!define ##设置表后缀(宏定义)
#setTableSuffix("Service") ##保存文件(宏定义)
#save("/service", "Service.java") ##包路径(宏定义)
#setPackageSuffix("service") $!autoImport import com.baomidou.mybatisplus.extension.service.IService;
import $!{tableInfo.savePackageName}.entity.$!tableInfo.name; ##表注释(宏定义)
#tableComment("表服务接口")
public interface $!{tableName} extends IService<$!tableInfo.name> { }

serviceImpl

##导入宏定义
$!define ##设置表后缀(宏定义)
#setTableSuffix("ServiceImpl") ##保存文件(宏定义)
#save("/service/impl", "ServiceImpl.java") ##包路径(宏定义)
#setPackageSuffix("service.impl") $!autoImport import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import $!{tableInfo.savePackageName}.mapper.$!{tableInfo.name}Mapper;
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}Mapper, $!{tableInfo.name}> implements $!{tableInfo.name}Service { }

controller

##导入宏定义
$!define ##设置表后缀(宏定义)
#setTableSuffix("Controller") ##保存文件(宏定义)
#save("/controller", "Controller.java") ##包路径(宏定义)
#setPackageSuffix("controller") ##定义服务名
#set($serviceName = $!tool.append($!tool.firstLowerCase($!tableInfo.name), "Service")) ##定义实体对象名
#set($entityName = $!tool.firstLowerCase($!tableInfo.name)) $!autoImport import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.test.common.core.utils.Res;
import com.test.common.core.utils.Result;
import org.springframework.web.bind.annotation.*;
import lombok.extern.slf4j.Slf4j;
import lombok.AllArgsConstructor;
import com.test.business.entity.CommonQuery;
import com.test.business.utils.AutoQueryGenerator; import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation; import $!{tableInfo.savePackageName}.entity.$!tableInfo.name;
import $!{tableInfo.savePackageName}.service.$!{tableInfo.name}Service; ##表注释(宏定义)
#tableComment("表控制层")
@RestController
@RequestMapping("/$!tool.firstLowerCase($!tableInfo.name)")
@AllArgsConstructor
@Slf4j
@Api(tags = "${tableInfo.comment}(${tableInfo.name})APi")
public class $!{tableName} {
/**
* 服务对象
*/
private final $!{tableInfo.name}Service $!{serviceName}; /**
* 分页查询所有数据
*
* @param page 分页对象
* @param $!entityName 查询实体
* @return 所有数据
*/
@GetMapping("/page")
@ApiOperation(value = "分页查询${tableInfo.comment}")
public Result listPageAll(Page<$!tableInfo.name> page, $!tableInfo.name $!entityName) {
return Res.ok($!{serviceName}.page(page, new LambdaQueryWrapper<$!tableInfo.name>()));
} /**
* 高级查询数据
*
* @param page 分页对象
* @param $!entityName 查询实体
* @return 所有数据
*/
@GetMapping("/queryPage")
@ApiOperation(value = "高级分页查询${tableInfo.comment}")
public Result listPageAll(Page<$!tableInfo.name> page, $!tableInfo.name $!entityName, CommonQuery commonQuery) {
QueryWrapper<$!tableInfo.name> autoQueryWrapper = AutoQueryGenerator.initQueryWrapper($!entityName, commonQuery);
return Res.ok($!{serviceName}.page(page, autoQueryWrapper));
} /**
* 高级查询所有数据
*
* @param $!entityName 查询实体
* @return 所有数据
*/
@GetMapping("/list")
@ApiOperation(value = "高级查询全部${tableInfo.comment}")
public Result listAll($!tableInfo.name $!entityName, CommonQuery commonQuery) {
QueryWrapper<$!tableInfo.name> autoQueryWrapper = AutoQueryGenerator.initQueryWrapper($!entityName, commonQuery);
return Res.ok($!{serviceName}.list(autoQueryWrapper));
} /**
* 通过主键查询单条数据
*
* @param id 主键
* @return 单条数据
*/
@GetMapping("/{id}")
@ApiOperation(value = "获取单个${tableInfo.comment}")
public Result selectOne(@PathVariable("id") Long id) {
return Res.ok($!{serviceName}.getById(id));
} /**
* 新增数据
*
* @param $!entityName 实体对象
* @return 新增结果
*/
@PostMapping
@ApiOperation(value = "新增${tableInfo.comment}")
public Result insert(@RequestBody $!tableInfo.name $!entityName) {
return Res.ok($!{serviceName}.save($!entityName));
} /**
* 修改数据
*
* @param $!entityName 实体对象
* @return 修改结果
*/
@PutMapping
@ApiOperation(value = "修改${tableInfo.comment}")
public Result update(@RequestBody $!tableInfo.name $!entityName) {
return Res.ok($!{serviceName}.updateById($!entityName));
} /**
* 删除数据
*
* @param id 主键结合
* @return 删除结果
*/
@DeleteMapping("/{id}")
@ApiOperation(value = "删除${tableInfo.comment}")
public Result delete(@PathVariable("id") Long id) {
return Res.ok($!{serviceName}.removeById(id));
}
}

【easycode】使用说明 & 示例的更多相关文章

  1. 设置API:wx.openSetting,wx.getSetting使用说明(示例:地图授权与取消授权后的重新授权)

    这个API解决了过去一个长久以来无法解决的问题,如何让用户重复授权: 打开小程序的设置界面:就是主动调取授权 目前资料极少,但是已经可以让大家先看看了: 官方文档地址:https://mp.weixi ...

  2. MarkDown 使用说明示例

    一.标题 一级标题 二级标题 三级标题 四级标题 五级标题 六级标题 一级标题 这是 H2 这是 H3 一级和二级标题还有一种写法 就是下面加横杆,同时 超过2个的 = 和 - 都可以有效果. Thi ...

  3. ansible基础及使用示例

    1 介绍 Ansible 是一个系统自动化工具,用来做系统配管理,批量对远程主机执行操作指令. 2 实验环境 ip 角色 192.168.40.71 ansible管控端 192.168.40.72 ...

  4. Matlab2015入门学习02

    1. 续行符 ... 当物理的一行之内写不下时, 在 物理行的结尾加上三个小黑点 >>跟在运算符之后,可以不留space空格 >>跟在数字之后,若不留白space,出错; 留一 ...

  5. (转)如何进行Monkey Test

    如何进行Monkey Test   目录 一 简介 二 测试准备 三 基本命令格式 四 测试Log获取 五 Monkey命令参数介绍 六 保存monkey log以及手机log到sdcard(新增) ...

  6. monkey测试(转)

    一.Monkey测试简介Monkey测试是Android平台自动化测试的一种手段,通过Monkey程序模拟用户触摸屏幕.滑动Trackball.按键等操作来对设备上的程序进行压力测试,检测程序多久的时 ...

  7. Android压力测试快速入门教程(图解)——Monkey工具

    文章目录: 一.Monkey简介 二.Monkey的基本用法 三.Monkey测试示例图解 四.Monkey命令参数介绍 五.Monkey log分析 一.Monkey简介 Monkey:Androi ...

  8. 如何进行Monkey Test

    如何进行Monkey Test   目录 一 简介 二 测试准备 三 基本命令格式 四 测试Log获取 五 Monkey命令参数介绍 六 保存monkey log以及手机log到sdcard(新增) ...

  9. adb Monkey用法

    以这条Monkey指令为例: #monkey -s --throttle -p com.android.cameraswitch -- 这条monkey指令是测试:在camera模块中产生1万次伪随机 ...

随机推荐

  1. 内省详解(Introspector/BeanInfo/MethodDescriptor/PropertyDescriptor)

    内省(Introspector)概念 ​ 内省Introspector 是Java提供的操作 JavaBean 的 API,用来访问某个属性的 getter/setter 方法.对于一个标准的 Jav ...

  2. 【odoo14】第六章、管理模块数据

    本章代码可在原作者github下载 使用外部ID及命名空间 外部ID及XML ID用于标记记录.到目前为止,我们在视图.菜单及动作中接触了XML IDs.本节我们将进一步了解什么是XML ID. 步骤 ...

  3. [THUPC2019] 找树

    一.题目 点此看题 二.解法 这道题很离谱啊,看上去是求一个最大值,其实是把生成树权值为 \(i\) 的个数都给算出来,因为权值很小. 既然是生成树可以考虑矩阵树定理,我们考虑他是求这样一个式子: \ ...

  4. Codeforces 976C Nested Segments

    题面: 传送门 C. Nested Segments Input file: standard input Output file: standard output Time limit: 2 secon ...

  5. react第三方库

    作者:慕课网链接:https://www.zhihu.com/question/59073695/answer/1071631250来源:知乎著作权归作者所有.商业转载请联系作者获得授权,非商业转载请 ...

  6. Tornado 简明教程

    1.TornadoTornado:python编写的web服务器兼web应用框架1.1.Tornado的优势轻量级web框架异步非阻塞IO处理方式出色的抗负载能力优异的处理性能,不依赖多进程/多线程, ...

  7. Ubuntu18.04安装MySQL(未设置密码或忘记密码)

    一 安装MySQL sudo apt-get update sudo apt-get install mysql-server 二 密码问题 1 安装时提示设置密码 这种情况没什么问题,通过已下命令登 ...

  8. (十四--十五)数据库查询优化Part I

    (十四--十五)数据库查询优化Part I 如果理解的有问题.欢迎大家指出.这也是我在看课记得笔记..可能会有很多问题 查询优化的重要性 请记住用户只会告诉DMBS他们想要什么样的结果,而不会告诉他们 ...

  9. Istio 生产环境用户流量接入方案

    总结Istio 生产环境用户流量接入方案 方案1 Client -> istioGateway域名(微服务) -> VritualService匹配路由并绑定网关 -> Destin ...

  10. day-05-字典

    字典的初识 why: 列表可以存储大量的数据,但数据之间的关联性不强 列表的查询速度比较慢.数量越大查询越慢 what:容器型数据类型:dict how: 数据类型的分类(可变与不可变) 可变(不可哈 ...