idea整合EasyCode基于lombok和swagger自定义模板

  • 1. 实体类entity模板
  • 2. 控制层controller模板
  • 3. 服务接口service模板
  • 4. 服务实现类serviceImpl模板
  • 5. 数据库访问层dao模板
  • 6. mapper.xml模板

idea整合EasyCode见:https://blog.csdn.net/weixin_42201180/article/details/107511798

1. 实体类entity模板

##引入宏定义
$!define##使用宏定义设置回调(保存位置与文件后缀)
#save("/entity", ".java")##使用宏定义设置包后缀
#setPackageSuffix("entity")##使用全局变量实现默认包导入
$!autoImport
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Getter;
import lombok.Setter;
import java.io.Serializable;
/*** @author: $!author* @date: $!time.currTime()* @description: $!{tableInfo.comment}($!{tableInfo.name})实体类*/
@Getter
@Setter
@ApiModel("#if($!{tableInfo.comment})$!{tableInfo.comment}实体类#end")
public class $!{tableInfo.name} implements Serializable {private static final long serialVersionUID = $!tool.serial();
#foreach($column in $tableInfo.fullColumn)@ApiModelProperty("#if(${column.comment})${column.comment}#end")private $!{tool.getClsNameByFullName($column.type)} $!{column.name};
#end}

2. 控制层controller模板

##定义初始变量
#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 io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import org.springframework.web.bind.annotation.*;import javax.annotation.Resource;/*** @author: $!author* @date: $!time.currTime()* @description: $!{tableInfo.comment}($!{tableInfo.name})表控制层*/
@Api(tags = "#if($!{tableInfo.comment})$!{tableInfo.comment}API#end")
@RestController
@RequestMapping("/$!tool.firstLowerCase($tableInfo.name)")
public class $!{tableName} {@Resourceprivate $!{tableInfo.name}Service $!tool.firstLowerCase($tableInfo.name)Service;/*** 通过主键查询单条数据** @param id 主键* @return 单条数据*/@ApiOperation(value = "通过主键查询单条数据")@GetMapping("/selectOne")public $!{tableInfo.name} selectOne($!pk.shortType id) {return this.$!{tool.firstLowerCase($tableInfo.name)}Service.queryById(id);}}

3. 服务接口service模板

##定义初始变量
#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;/*** @author: $!author* @date: $!time.currTime()* @description: $!{tableInfo.comment}($!{tableInfo.name})表服务接口*/
public interface $!{tableName} {/*** 通过ID查询单条数据** @param $!pk.name 主键* @return 实例对象*/$!{tableInfo.name} queryById($!pk.shortType $!pk.name);/*** 查询多条数据** @param offset 查询起始位置* @param limit 查询条数* @return 对象列表*/List<$!{tableInfo.name}> queryAllByLimit(int offset, int limit);/*** 新增数据** @param $!tool.firstLowerCase($!{tableInfo.name}) 实例对象* @return 实例对象*/$!{tableInfo.name} insert($!{tableInfo.name} $!tool.firstLowerCase($!{tableInfo.name}));/*** 修改数据** @param $!tool.firstLowerCase($!{tableInfo.name}) 实例对象* @return 实例对象*/$!{tableInfo.name} update($!{tableInfo.name} $!tool.firstLowerCase($!{tableInfo.name}));/*** 通过主键删除数据** @param $!pk.name 主键* @return 是否成功*/boolean deleteById($!pk.shortType $!pk.name);}

4. 服务实现类serviceImpl模板

##定义初始变量
#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#if($tableInfo.savePackageName)package $!{tableInfo.savePackageName}.#{end}service.impl;import $!{tableInfo.savePackageName}.entity.$!{tableInfo.name};
import $!{tableInfo.savePackageName}.mapper.$!{tableInfo.name}Mapper;
import $!{tableInfo.savePackageName}.service.$!{tableInfo.name}Service;
import org.springframework.stereotype.Service;import javax.annotation.Resource;
import java.util.List;/*** @author: $!author* @date: $!time.currTime()* @description: $!{tableInfo.comment}($!{tableInfo.name})表服务实现类*/
@Service("$!tool.firstLowerCase($!{tableInfo.name})Service")
public class $!{tableName} implements $!{tableInfo.name}Service {@Resourceprivate $!{tableInfo.name}Mapper $!tool.firstLowerCase($!{tableInfo.name})Mapper;/*** 通过ID查询单条数据** @param $!pk.name 主键* @return 实例对象*/@Overridepublic $!{tableInfo.name} queryById($!pk.shortType $!pk.name) {return this.$!{tool.firstLowerCase($!{tableInfo.name})}Mapper.queryById($!pk.name);}/*** 查询多条数据** @param offset 查询起始位置* @param limit 查询条数* @return 对象列表*/@Overridepublic List<$!{tableInfo.name}> queryAllByLimit(int offset, int limit) {return this.$!{tool.firstLowerCase($!{tableInfo.name})}Mapper.queryAllByLimit(offset, limit);}/*** 新增数据** @param $!tool.firstLowerCase($!{tableInfo.name}) 实例对象* @return 实例对象*/@Overridepublic $!{tableInfo.name} insert($!{tableInfo.name} $!tool.firstLowerCase($!{tableInfo.name})) {this.$!{tool.firstLowerCase($!{tableInfo.name})}Mapper.insert($!tool.firstLowerCase($!{tableInfo.name}));return $!tool.firstLowerCase($!{tableInfo.name});}/*** 修改数据** @param $!tool.firstLowerCase($!{tableInfo.name}) 实例对象* @return 实例对象*/@Overridepublic $!{tableInfo.name} update($!{tableInfo.name} $!tool.firstLowerCase($!{tableInfo.name})) {this.$!{tool.firstLowerCase($!{tableInfo.name})}Mapper.update($!tool.firstLowerCase($!{tableInfo.name}));return this.queryById($!{tool.firstLowerCase($!{tableInfo.name})}.get$!tool.firstUpperCase($pk.name)());}/*** 通过主键删除数据** @param $!pk.name 主键* @return 是否成功*/@Overridepublic boolean deleteById($!pk.shortType $!pk.name) {return this.$!{tool.firstLowerCase($!{tableInfo.name})}Mapper.deleteById($!pk.name) > 0;}
}

5. 数据库访问层dao模板

##定义初始变量
#set($tableName = $tool.append($tableInfo.name, "Mapper"))
##设置回调
$!callback.setFileName($tool.append($tableName, ".java"))
$!callback.setSavePath($tool.append($tableInfo.savePath, "/mapper"))##拿到主键
#if(!$tableInfo.pkColumn.isEmpty())#set($pk = $tableInfo.pkColumn.get(0))
#end#if($tableInfo.savePackageName)package $!{tableInfo.savePackageName}.#{end}mapper;import $!{tableInfo.savePackageName}.entity.$!{tableInfo.name};
import org.apache.ibatis.annotations.Param;
import java.util.List;/*** @author: $!author* @date: $!time.currTime()* @description: $!{tableInfo.comment}($!{tableInfo.name})表数据库访问层*/
public interface $!{tableName} {/*** 通过ID查询单条数据** @param $!pk.name 主键* @return 实例对象*/$!{tableInfo.name} queryById($!pk.shortType $!pk.name);/*** 查询指定行数据** @param offset 查询起始位置* @param limit 查询条数* @return 对象列表*/List<$!{tableInfo.name}> queryAllByLimit(@Param("offset") int offset, @Param("limit") int limit);/*** 通过实体作为筛选条件查询** @param $!tool.firstLowerCase($!{tableInfo.name}) 实例对象* @return 对象列表*/List<$!{tableInfo.name}> queryAll($!{tableInfo.name} $!tool.firstLowerCase($!{tableInfo.name}));/*** 新增数据** @param $!tool.firstLowerCase($!{tableInfo.name}) 实例对象* @return 影响行数*/int insert($!{tableInfo.name} $!tool.firstLowerCase($!{tableInfo.name}));/*** 批量新增数据(MyBatis原生foreach方法)** @param entities List<$!{tableInfo.name}> 实例对象列表* @return 影响行数*/int insertBatch(@Param("entities") List<$!{tableInfo.name}> entities);/*** 批量新增或按主键更新数据(MyBatis原生foreach方法)** @param entities List<$!{tableInfo.name}> 实例对象列表* @return 影响行数*/int insertOrUpdateBatch(@Param("entities") List<$!{tableInfo.name}> entities);/*** 修改数据** @param $!tool.firstLowerCase($!{tableInfo.name}) 实例对象* @return 影响行数*/int update($!{tableInfo.name} $!tool.firstLowerCase($!{tableInfo.name}));/*** 通过主键删除数据** @param $!pk.name 主键* @return 影响行数*/int deleteById($!pk.shortType $!pk.name);}

6. mapper.xml模板

##引入mybatis支持
$!mybatisSupport##设置保存名称与保存位置
$!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"><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><!--查询单个--><select id="queryById" resultMap="$!{tableInfo.name}Map">select#allSqlColumn()from $!{tableInfo.obj.parent.name}.$!tableInfo.obj.namewhere $!pk.obj.name = #{$!pk.name}</select><!--查询指定行数据--><select id="queryAllByLimit" resultMap="$!{tableInfo.name}Map">select#allSqlColumn()from $!{tableInfo.obj.parent.name}.$!tableInfo.obj.namelimit #{offset}, #{limit}</select><!--通过实体作为筛选条件查询--><select id="queryAll" resultMap="$!{tableInfo.name}Map">select#allSqlColumn()from $!{tableInfo.obj.parent.name}.$!tableInfo.obj.name<where>
#foreach($column in $tableInfo.fullColumn)<if test="$!column.name != null#if($column.type.equals("java.lang.String")) and $!column.name != ''#end">and $!column.obj.name = #{$!column.name}</if>
#end</where></select><!--新增所有列--><insert id="insert" keyProperty="$!pk.name" useGeneratedKeys="true">insert into $!{tableInfo.obj.parent.name}.$!{tableInfo.obj.name}(#foreach($column in $tableInfo.otherColumn)$!column.obj.name#if($velocityHasNext), #end#end)values (#foreach($column in $tableInfo.otherColumn)#{$!{column.name}}#if($velocityHasNext), #end#end)</insert><insert id="insertBatch" keyProperty="$!pk.name" useGeneratedKeys="true">insert into $!{tableInfo.obj.parent.name}.$!{tableInfo.obj.name}(#foreach($column in $tableInfo.otherColumn)$!column.obj.name#if($velocityHasNext), #end#end)values<foreach collection="entities" item="entity" separator=",">(#foreach($column in $tableInfo.otherColumn)#{entity.$!{column.name}}#if($velocityHasNext), #end#end)</foreach></insert><insert id="insertOrUpdateBatch" keyProperty="$!pk.name" useGeneratedKeys="true">insert into $!{tableInfo.obj.parent.name}.$!{tableInfo.obj.name}(#foreach($column in $tableInfo.otherColumn)$!column.obj.name#if($velocityHasNext), #end#end)values<foreach collection="entities" item="entity" separator=",">(#foreach($column in $tableInfo.otherColumn)#{entity.$!{column.name}}#if($velocityHasNext), #end#end)</foreach>on duplicate key update#foreach($column in $tableInfo.otherColumn)$!column.obj.name = values($!column.obj.name) #if($velocityHasNext), #end#end</insert><!--通过主键修改数据--><update id="update">update $!{tableInfo.obj.parent.name}.$!{tableInfo.obj.name}<set>
#foreach($column in $tableInfo.otherColumn)<if test="$!column.name != null#if($column.type.equals("java.lang.String")) and $!column.name != ''#end">$!column.obj.name = #{$!column.name},</if>
#end</set>where $!pk.obj.name = #{$!pk.name}</update><!--通过主键删除--><delete id="deleteById">delete from $!{tableInfo.obj.parent.name}.$!{tableInfo.obj.name} where $!pk.obj.name = #{$!pk.name}</delete></mapper>

idea整合EasyCode基于lombok和swagger自定义模板相关推荐

  1. Swagger自定义模板

    2019独角兽企业重金招聘Python工程师标准>>> Swagger自定义模板 下载Swagger codegen <dependency><groupId> ...

  2. EasyCode介绍及自定义模板

    一.前言 最近做了几个傻瓜式的CRUD模块,光调整EasyCode生成的代码格式就调整了半天,毫无意义,但又必不可少.于是,网上找了关于EasyCode自定义模板的文章,尝试自定义模板,从根本上解决代 ...

  3. easycode自定义模板转载

    easycode自定义模板 程序员s 2020-09-25 11:07:26  916  已收藏 6 分类专栏: -----[idea] 文章标签: easycode自定义模板 easycode模板 ...

  4. 今晚8点直播 | 详解基于百度自定义模板的OCR结果结构化处理技术

    随着行业的发展和技术的成熟,文字识别(OCR)目前已经应用到了多个行业中,比如物流行业快递包裹的分拣,金融行业的支票单据识别输入,交通领域中的车牌识别,以及日常生活中的卡证.票据识别等等.OCR(文字 ...

  5. 公开课报名 | 基于自定义模板的OCR结果的结构化处理技术

    随着行业的发展和技术的成熟,文字识别(OCR)目前已经应用到了多个行业中,比如物流行业快递包裹的分拣,金融行业的支票单据识别输入,交通领域中的车牌识别,以及日常生活中的卡证.票据识别等等.OCR(文字 ...

  6. sklearn基于make_scorer函数构建自定义损失函数或者评估指标

    sklearn基于make_scorer函数构建自定义损失函数或者评估指标 # 导入需要的包和库 # Load libraries from sklearn.metrics import make_s ...

  7. 基于 HTML5 的 WebGL 自定义 3D 摄像头监控模型

    2019独角兽企业重金招聘Python工程师标准>>> 前言 随着视频监控联网系统的不断普及和发展, 网络摄像机更多的应用于监控系统中,尤其是高清时代的来临,更加快了网络摄像机的发展 ...

  8. java自定义标签 map_基于Spring MVC的自定义标签Tag

    基于Spring MVC的自定义标签Tag 1.环境准备 本次小项目基于Spring MVC进行测试呈现,项目依赖的jar文件列表如下: 2.搭建SpringMVC Spring MVC环境最关键的两 ...

  9. Spring整合JMS——基于ActiveMQ实现(一)

    Spring整合JMS--基于ActiveMQ实现(一) 1.1     JMS简介 JMS的全称是Java Message Service,即Java消息服务.它主要用于在生产者和消费者之间进行消息 ...

最新文章

  1. PHP 开发中的外围资源性能分析(一)
  2. error 1309 mysql_MySQ登录提示ERROR 1045 (28000)错误如何解决
  3. jquery动态添加列表后样式失效解决方式
  4. 如何解决div里面img图片下方有空白的问题?
  5. 关卡2-1 简单的模拟 1540 机器翻译
  6. hdu1025 Constructing Roads In JGShining#39;s Kingdom (nlogn的LIS)
  7. OAauth2.0包括以下角
  8. Java获取文件路径获取访问路径、域名、项目名、请求入参
  9. 两数相加Python解法
  10. oracle多条件分组统计_多条件统计,就必须用Ifs系列函数,绝对的高能!
  11. post发送请求参数注意的问题
  12. BTCU 分叉,真的是比特币“千年痛点”克星吗?
  13. swagger -- 前后端分离的API接口
  14. html插入页码,Word添加页码后,每一页的页码都一样怎么办?
  15. 一文理清Apache Spark内存管理脉络
  16. 使用Chrome DevTools的Timeline分析页面性能
  17. Android蓝牙开发 — 经典蓝牙BLE蓝牙
  18. 《狂人日记》 解读|读后感
  19. 开源数字基础设施 项目 -- Speckle
  20. Ubuntu16.04安装Matlab2015a_hudingyin_新浪博客

热门文章

  1. 每天CookBook之Python-004
  2. HP已决定将webOS开源
  3. Bailian4069 买手机【序列处理+排序】
  4. 51Nod-2149 字符串出现位置【水题】
  5. JSK-5 矩阵翻转【入门】
  6. Vijos P1786 质因数分解【质因数分解】
  7. Graphviz样例之有限状态自动机
  8. docker 安装与常用命令与常用容器(containers)环境
  9. Matlab Tricks(二十五)—— plot 属性
  10. 概率论 —— 分析计算机系统和网络的可靠性和通用性