easycode自定义模板

程序员s 2020-09-25 11:07:26  916  已收藏 6
分类专栏: -----【idea】 文章标签: easycode自定义模板 easycode模板 easycode插件模板 idea EasyCode模板 easycode使用.
版权
Easycode是idea的一个插件,可以直接对数据的表生成entity,controller,service,dao,mapper,无需任何编码,简单而强大。

安装教程搜索一下就行,官网自带的模板功能所有欠缺,自定义的一个模板。

注意:

1.增,批量增,删,改,单查,筛选查询

2.lombok实现,如果没有lombok自己更改文件或安装lombok

一、dao.java模板

##定义初始变量
#set($tableName = $tool.append($tableInfo.name, "Dao"))
##设置回调
$!callback.setFileName($tool.append($tableName, ".java"))
$!callback.setSavePath($tool.append($tableInfo.savePath, "/dao"))
 
##拿到主键
#if(!$tableInfo.pkColumn.isEmpty())
    #set($pk = $tableInfo.pkColumn.get(0))
#end
 
#if($tableInfo.savePackageName)package $!{tableInfo.savePackageName}.#{end}dao;
 
import $!{tableInfo.savePackageName}.entity.$!{tableInfo.name};
import org.apache.ibatis.annotations.Param;
import org.apache.ibatis.annotations.Mapper;
import java.util.List;
 
/**
 * $!{tableInfo.comment}($!{tableInfo.name})表数据库访问层
 * @author shenning
 * @description 
 * @since $!time.currTime()
 */
@Mapper
public interface $!{tableName} {
 
    /**
     * 通过ID查询单条数据
     *
     * @param $!pk.name 主键
     * @return 实例对象
     */
    $!{tableInfo.name} queryById($!pk.shortType $!pk.name);
 
   
    /**
     * 通过实体作为筛选条件查询
     *
     * @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}));
 
        /**
     * 批量新增
     *
     * @param $!tool.firstLowerCase($!{tableInfo.name}) 实例对象的集合
     * @return 影响行数
     */
    int batchInsert(List<$!{tableInfo.name}> $!tool.firstLowerCase($!{tableInfo.name}));
 
    /**
     * 修改数据
     *
     * @param $!tool.firstLowerCase($!{tableInfo.name}) 实例对象
     * @return 影响行数
     */
    int updateById($!{tableInfo.name} $!tool.firstLowerCase($!{tableInfo.name}));
 
    /**
     * 通过主键删除数据
     *
     * @param $!pk.name 主键
     * @return 影响行数
     */
    int deleteById($!pk.shortType $!pk.name);
 
}
二、mapper.xml模板

##引入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>
 
    <!-- 基本字段 -->
    <sql id="Base_Column_List">
        #allSqlColumn()
        
    </sql>
 
    <!--查询单个-->
    <select id="queryById" resultMap="$!{tableInfo.name}Map">
        select
          <include refid="Base_Column_List" />
        from $!tableInfo.obj.name
        where $!pk.obj.name = #{$!pk.name}
    </select>
 
    <!--通过实体作为筛选条件查询-->
    <select id="queryAll" resultMap="$!{tableInfo.name}Map">
        select
          <include refid="Base_Column_List" />
        from $!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.name}(#foreach($column in $tableInfo.fullColumn)$!column.obj.name#if($velocityHasNext), #end#end)
        values (#foreach($column in $tableInfo.fullColumn)#{$!{column.name}}#if($velocityHasNext), #end#end)
    </insert>
 
 
     <!-- 批量新增 -->
    <insert id="batchInsert">
        insert into $!{tableInfo.obj.name}(#foreach($column in $tableInfo.fullColumn)$!column.obj.name#if($velocityHasNext), #end#end)
        values 
        <foreach collection="list" item="stu" separator=",">
        (
            #foreach($column in $tableInfo.fullColumn)
            #{stu.$!{column.name}}#if($velocityHasNext), #end#end
            
         )
         </foreach>
    </insert>
 
    <!--通过主键修改数据-->
    <update id="updateById">
        update $!{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.name} where $!pk.obj.name = #{$!pk.name}
    </delete>
 
</mapper>
 三:entity.java模板

##引入宏定义
$!define
##使用宏定义设置回调(保存位置与文件后缀)
#save("/entity", ".java")
##使用宏定义设置包后缀
#setPackageSuffix("entity")
##使用全局变量实现默认包导入
$!autoImport
import java.io.Serializable;
import lombok.*;
##
##使用宏定义实现类注释信息
/**
 * $!{tableInfo.comment}($!{tableInfo.name})实体类
 * @author shenning
 * @description 
 * @since $!time.currTime()
 */
@Getter
@Setter
@ToString
public class $!{tableInfo.name} implements Serializable {
    private static final long serialVersionUID = $!tool.serial();
#foreach($column in $tableInfo.fullColumn)
 
    #if(${column.comment})/*** ${column.comment} */#end
    private $!{tool.getClsNameByFullName($column.type)} $!{column.name};
##    private $!{tool.getClsNameByFullName($column.type)} $!{tool.firstUpperCase($column.name)};
#end
 
##若没有使用lombok插件,该段不要注释,按照默认的模板
###foreach($column in $tableInfo.fullColumn)
####使用宏定义实现get,set方法
###getSetMethod($column)
###end
 
}
四:service.java模板

##定义初始变量
#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;
import com.github.pagehelper.PageInfo;
 
 
 
 /**
 * $!{tableInfo.comment}($!{tableInfo.name})表服务接口
 * @author shenning
 * @description 
 * @since $!time.currTime()
 */
public interface $!{tableName} {
 
    //通过ID查询
    $!{tableInfo.name} queryById($!pk.shortType $!pk.name);
 
    //通过实体作为筛选条件查询
    List<$!{tableInfo.name}> queryAll($!{tableInfo.name} $!tool.firstLowerCase($!{tableInfo.name}));
 
    //新增数据
    int insert($!{tableInfo.name} $!tool.firstLowerCase($!{tableInfo.name}));
 
    //修改数据
    int updateById($!{tableInfo.name} $!tool.firstLowerCase($!{tableInfo.name}));
 
    //通过主键id删除数据
    int deleteById($!pk.shortType $!pk.name);
 
}
 五:serivceImpl.java

##定义初始变量
#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}.dao.$!{tableInfo.name}Dao;
import $!{tableInfo.savePackageName}.service.$!{tableInfo.name}Service;
import org.springframework.stereotype.Service;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.transaction.annotation.Transactional;
import com.github.pagehelper.PageHelper;
import com.github.pagehelper.PageInfo;
 
import javax.annotation.Resource;
import java.util.List;
 
 
 /**
 * $!{tableInfo.comment}($!{tableInfo.name})表服务实现类
 * @author shenning
 * @description 
 * @since $!time.currTime()
 */
@Service
@Transactional 
public class $!{tableName} implements $!{tableInfo.name}Service {
    @Autowired
    private $!{tableInfo.name}Dao $!tool.firstLowerCase($!{tableInfo.name})Dao;
 
    /**
     * 通过ID查询单条数据
     * @param $!pk.name 主键
     * @return 实例对象
     */
    @Override
    public $!{tableInfo.name} queryById($!pk.shortType $!pk.name) {
        return $!{tool.firstLowerCase($!{tableInfo.name})}Dao.queryById($!pk.name);
    }
 
    /**
     * 查询多条数据
     * @param $!tool.firstLowerCase($!{tableInfo.name}) 实例对象
     * @return 对象列表
     */
    @Override
    public List<$!{tableInfo.name}> queryAll($!{tableInfo.name} $!tool.firstLowerCase($!{tableInfo.name})) {
        //PageHelper.startPage(pageNum,pageSize);
        List<$!{tableInfo.name}> dataList = $!{tool.firstLowerCase($!{tableInfo.name})}Dao.queryAll($!tool.firstLowerCase($!{tableInfo.name}));
        //PageInfo<$!{tableInfo.name}> page = new PageInfo<$!{tableInfo.name}>(dataList);
        return dataList;
    }
 
    /**
     * 新增数据
     * @param $!tool.firstLowerCase($!{tableInfo.name}) 实例对象
     * @return 实例对象
     */
    @Override
    public int insert($!{tableInfo.name} $!tool.firstLowerCase($!{tableInfo.name})) {
        return $!{tool.firstLowerCase($!{tableInfo.name})}Dao.insert($!tool.firstLowerCase($!{tableInfo.name}));
    }
 
    /**
     * 修改数据
     * @param $!tool.firstLowerCase($!{tableInfo.name}) 实例对象
     * @return 实例对象
     */
    @Override
    public int updateById($!{tableInfo.name} $!tool.firstLowerCase($!{tableInfo.name})) {
        return $!{tool.firstLowerCase($!{tableInfo.name})}Dao.updateById($!tool.firstLowerCase($!{tableInfo.name}));
    }
 
    /**
     * 通过主键id删除数据
     * @param $!pk.name 主键
     */
    @Override
    public int deleteById($!pk.shortType $!pk.name) {
        return $!{tool.firstLowerCase($!{tableInfo.name})}Dao.deleteById($!pk.name);
    }
}
六:controller.java模板

##定义初始变量
#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}.service.$!{tableInfo.name}Service;
import $!{tableInfo.savePackageName}.entity.$!{tableInfo.name};
import org.springframework.web.bind.annotation.*;
import org.springframework.beans.factory.annotation.Autowired;
import java.util.List;
import javax.annotation.Resource;
 
/**
 * $!{tableInfo.comment}($!{tableInfo.name})表控制层
 * @author shenning
 * @description 
 * @since $!time.currTime()
 */
@RestController
@RequestMapping("$!tool.firstLowerCase($tableInfo.name)")
public class $!{tableName} {
    /**
     * $!{tableInfo.comment}服务对象
     */
    @Autowired
    private $!{tableInfo.name}Service $!tool.firstLowerCase($tableInfo.name)Service;
 
    /**
     * 通过主键查询单条数据
     */
    @GetMapping("get$!tool.firstUpperCase($tableInfo.name)One")
    public $!{tableInfo.name} get$!tool.firstUpperCase($tableInfo.name)One($!pk.shortType id) {
        return $!{tool.firstLowerCase($tableInfo.name)}Service.queryById(id);
    }
    
    /**
     * 通过查询条件筛选数据
     */
    @GetMapping("get$!tool.firstUpperCase($tableInfo.name)List")
    public List<$!{tableInfo.name}> get$!tool.firstUpperCase($tableInfo.name)List($!{tableInfo.name} $!tool.firstLowerCase($!{tableInfo.name})) {
         List<$!{tableInfo.name}> getList=$!{tool.firstLowerCase($tableInfo.name)}Service.queryAll($!tool.firstLowerCase($!{tableInfo.name}));
         return getList;
    }
    
    /**
     * 新增数据$!{tableInfo.comment}
     */
    @PostMapping("add$!tool.firstUpperCase($tableInfo.name)")
    public int add$!tool.firstUpperCase($!{tableInfo.name})(@RequestBody $!{tableInfo.name} $!tool.firstLowerCase($!{tableInfo.name})) {
        int addState=$!{tool.firstLowerCase($tableInfo.name)}Service.insert($!tool.firstLowerCase($!{tableInfo.name}));
        return addState;
    }
    
    /**
     * 修改数据$!{tableInfo.comment}
     */
    @GetMapping("update$!tool.firstUpperCase($tableInfo.name)")
    public int update$!tool.firstUpperCase($!{tableInfo.name})(@RequestBody $!{tableInfo.name} $!tool.firstLowerCase($!{tableInfo.name})) {
         int updateState=$!{tool.firstLowerCase($tableInfo.name)}Service.updateById($!tool.firstLowerCase($!{tableInfo.name}));
         return updateState;
    }
    
    /**
     * 删除数据$!{tableInfo.comment}
     */
    @GetMapping("delete$!tool.firstUpperCase($tableInfo.name)")
    public int delete$!tool.firstUpperCase($!{tableInfo.name})($!pk.shortType id) {
         int deleteState=$!{tool.firstLowerCase($tableInfo.name)}Service.deleteById(id);
         return deleteState;
    }
}
 
————————————————
版权声明:本文为CSDN博主「程序员s」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/u012448904/article/details/108792178

easycode自定义模板转载相关推荐

  1. EasyCode介绍及自定义模板

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

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

    idea整合EasyCode基于lombok和swagger自定义模板 1. 实体类entity模板 2. 控制层controller模板 3. 服务接口service模板 4. 服务实现类servi ...

  3. thinkphp自定义模板标签(一)

    thinkphp内置的foreach和include等模板标签使用是非常方便的:但是内置的那些标签只能满足常用功能,个性化的功能就需要我们自己编写自定义模板标签了:下面就是要讲解如何实现: 示例环境: ...

  4. 谈谈yii2-gii如何自定义模板

    作者:白狼 出处:http://www.manks.top/article/yii2_gii_custom_template本文版权归作者,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位 ...

  5. Xcode 创建自定义模板

    背景 在团队进行项目开发的时候,一般都会统一代码风格,以方便代码的维护. 比如在以 Swift 为主的工程中,并不存在头文件的概念,声明与实现都是放在同一个文件,如果不对代码按一定规则进行分割,那在较 ...

  6. sublime text插件emmet自定义模板

    首先要找到 snippets.json这个文件,路径是preferences>browse packages,看看有没有emmet目录. 如果没有,可能是您没有安装emmet插件,或者您安装了但 ...

  7. django “如何”系列4:如何编写自定义模板标签和过滤器

    django的模板系统自带了一系列的内建标签和过滤器,一般情况下可以满足你的要求,如果觉得需更精准的模板标签或者过滤器,你可以自己编写模板标签和过滤器,然后使用{% load %}标签使用他们. 代码 ...

  8. idea超炫的自定义模板

    idea超炫的自定义模板   idea 有些快捷键 sout -> System.out.println() ,输入sout,idea能自动补全代码, 这种约定的快捷方式大大提高了效率, 而id ...

  9. 第2阶段19-vue自定义模板

    一.自定义模板 1.1.通过template标签定义模板 <!-- 显示用户列表的模板(网页)--> <template id="template01">& ...

最新文章

  1. Linux常用的Shell命令
  2. oracle 创建数据库 表空间 用户 授权和toad导入导出数据库
  3. GAUSSIAN MIXTURE VAE: LESSONS IN VARIATIONAL INFERENCE, GENERATIVE MODELS, AND DEEP NETS
  4. tab css html,纯css的tab 切换
  5. linux安全策略与实例pdf,实验一:Linux用户管理与安全策略.pdf
  6. 反向工程解析QQ扫码登录的OAuth2流程
  7. 使用Docker+Jenkins自动构建部署
  8. 关于《啊哈!算法》相关资源
  9. 小规模纳税人季度申报流程指导
  10. 电脑可以上网但打不开微信公众号
  11. springboot validation详解
  12. 锤子手机图片,音频,视频在哪个文件夹
  13. 抓包软件wireshark分析
  14. 工业控制系统漏洞检测技术(工控安全学习笔记)
  15. 翟东平微信公众号视频教程JAVA201810版2/3阶段-翟东平-专题视频课程
  16. webscraper多页爬取_webscraper的常见爬取问题
  17. (二)Java线程与系统线程,生命周期
  18. XMind揭秘:汽车的世界
  19. Android tips(十二)--Android开发中使用矢量图
  20. LVM的常用操作【创建lvm】

热门文章

  1. 2021.12.20用ULN2003驱动四线步进电机
  2. ubuntu执行编译好的文件显示文件不存在_嵌入式开发 | 什么是交叉编译(CROSS_COMPILE)...
  3. k8s使用volume将ConfigMap作为文件或目录直接挂载_从零开始入门 K8s | 如何实现应用配置管理?...
  4. c 语言 指针 指向数组,C 指向数组的指针
  5. echart 折线图设置y轴单位_如何让echarts中y轴的单位位于数值的右上角
  6. [SHOI2017]组合数问题
  7. 装饰器,闭包,高阶函数,嵌套函数
  8. OAuth2.0学习(1-1)OAuth2.0是什么?
  9. 基于Neutron的Kubernetes SDN实践经验之谈
  10. Nginx-location配置指南