代码生成插件easycode

简介: 代码生成插件easycode

gitee地址

EasyCode: EasyCode是基于IntelliJ IDEA开发的代码生成插件,支持自定义任意模板(Java,html,js,xml)。只要是与数据库相关的代码都可以通过自定义模板来生成。支持数据库类型与java类型映射关系配置。支持同时生成生成多张表的代码。每张表有独立的配置信息。完全的个性化定义,规则由你设置。

文档地址

文档预览 - Gitee.com

自定义记录

TypeMapper

java.lang.String

varchar(\d+)?

java.lang.String

char(\d+)?

java.lang.String

text

java.lang.Double

decimal(\d+)?

java.lang.Double

decimal(\d+,\d+)?

java.lang.Integer

integer

java.lang.Integer

int(\d+)?

java.lang.Integer

int4

java.lang.Long

int8

java.lang.Long

bigint(\d+)?

java.util.String

datetime

java.util.Date

timestamp

java.lang.Boolean

boolean

java.lang.Integer

tinyint(\d+)?

java.lang.Date

date

java.lang.Object

double(\d+,\d+)?

java.lang.Object

longtext

显示详细信息

mapper文件模板

##引入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="basesql">

       #allSqlColumn()

   </sql>

   <!--查询单个-->

   <select id="queryById" resultMap="$!{tableInfo.name}Map">

       select

       <include refid="basesql"></include>

       from $!tableInfo.obj.name

       where $!pk.obj.name = #{$!pk.name}

   </select>


   <!--查询指定行数据-->

   <select id="queryAllByLimit" resultMap="$!{tableInfo.name}Map">

       select

       <include refid="basesql"></include>

       from $!tableInfo.obj.name

       limit #{offset}, #{limit}

   </select>


   <!--通过实体作为筛选条件查询-->

   <select id="queryAll" resultMap="$!{tableInfo.name}Map">

       select

       <include refid="basesql"></include>

       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.otherColumn)$!column.obj.name#if($velocityHasNext), #end#end)

       values (#foreach($column in $tableInfo.otherColumn)#{$!{column.name}}#if($velocityHasNext), #end#end)

   </insert>

   

   <!--新增有值的字段-->

   <insert id="insertSelect" keyProperty="$!pk.name" useGeneratedKeys="true">

       INSERT INTO $!{tableInfo.obj.name}

       <trim prefix="(" suffix=")" suffixOverrides=",">

#foreach($column in $tableInfo.otherColumn)

           <if test="$!column.name != null#if($column.type.equals("java.lang.String")) and $!column.name != ''#end">

               $!column.obj.name,

           </if>

#end

       </trim>

       VALUES

       <trim prefix="(" suffix=")" suffixOverrides=",">

#foreach($column in $tableInfo.otherColumn)

           <if test="$!column.name != null#if($column.type.equals("java.lang.String")) and $!column.name != ''#end">

               #{$!column.name},

           </if>

#end

       </trim>

   </insert>

   

   <!--批量新增所有列-->

   <insert id="insertBatch" keyProperty="$!pk.name" useGeneratedKeys="true">

       INSERT INTO $!{tableInfo.obj.name}(#foreach($column in $tableInfo.otherColumn)$!column.obj.name#if($velocityHasNext), #end#end)

       VALUES

       <foreach collection="$!{tableNameLowerCase}List" 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.name}(#foreach($column in $tableInfo.otherColumn)$!column.obj.name#if($velocityHasNext), #end#end)

       VALUES

       <foreach collection="$!{tableNameLowerCase}List" 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.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>

dao模板

##定义初始变量

#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 java.util.List;


/**

* $!{tableInfo.comment}($!{tableInfo.name})表数据库访问层

*

* @author $!author

* @since $!time.currTime()

*/

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}));


   /**

    * 新增实体有值的字段

    *

    * @param $!tool.firstLowerCase($!{tableInfo.name}) 实例对象

    * @return 影响行数

    */

   int insertSelect($!{tableInfo.name} $!tool.firstLowerCase($!{tableInfo.name}));


       /**

    * 批量新增数据(MyBatis原生foreach方法)

    *

    * @param $!{tableNameLowerCase}List 实例对象列表

    * @return 影响行数

    */

   int insertBatch(@Param("$!{tableNameLowerCase}List") List<$!{tableInfo.name}> $!{tableNameLowerCase}List);


   /**

    * 批量新增或按主键更新数据(MyBatis原生foreach方法)

    *

    * @param $!{tableNameLowerCase}List 实例对象列表

    * @return 影响行数

    */

   int insertOrUpdateBatch(@Param("$!{tableNameLowerCase}List") List<$!{tableInfo.name}> $!{tableNameLowerCase}List);


   /**

    * 修改数据

    *

    * @param $!tool.firstLowerCase($!{tableInfo.name}) 实例对象

    * @return 影响行数

    */

   int update($!{tableInfo.name} $!tool.firstLowerCase($!{tableInfo.name}));


   /**

    * 通过主键删除数据

    *

    * @param $!pk.name 主键

    * @return 影响行数

    */

   int deleteById($!pk.shortType $!pk.name);


}

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 org.springframework.web.bind.annotation.*;

import com.common.Result;

import javax.annotation.Resource;

import java.util.List;

/**

* $!{tableInfo.comment}

*

* @author $!author

* @date $!time.currTime()

*/

@RestController

@RequestMapping("sim/$!tool.firstLowerCase($tableInfo.name)")

public class $!{tableName} {

   /**

    * 服务对象

    */

   @Resource

   private $!{tableInfo.name}Service $!tool.firstLowerCase($tableInfo.name)Service;


   /**

    *查询单条

    *

    * @param id 主键

    * @return 单条数据

    */

   @GetMapping("query")

   public Result query(@RequestParam(required = true) $!pk.shortType id) {

       $!{tableInfo.name} $!{tool.firstLowerCase($tableInfo.name)} = $!{tool.firstLowerCase($tableInfo.name)}Service.queryById(id);

       return Result.success($!{tool.firstLowerCase($tableInfo.name)});

   }

   

   /**

    * 查询多条

    * @param $!{tool.firstLowerCase($tableInfo.name)} 条件实体

    * @return 多条记录

    */

   @GetMapping("queryAll")

   public Result queryAll($!{tableInfo.name} $!{tool.firstLowerCase($tableInfo.name)}){

       List<$!{tableInfo.name}> $!{tool.firstLowerCase($tableInfo.name)}List = $!{tool.firstLowerCase($tableInfo.name)}Service.queryAll($!{tool.firstLowerCase($tableInfo.name)});

       return Result.success($!{tool.firstLowerCase($tableInfo.name)}List);

   }


   /**

    * 分页查询多条

    * @param page 页码

    * @param limit 条数

    * @param $!{tool.firstLowerCase($tableInfo.name)} 条件实体

    * @return 多条记录

    */

   @GetMapping("/queryAllByPage")

   public Result queryAllByPage(Integer page, Integer limit,$!{tableInfo.name} $!{tool.firstLowerCase($tableInfo.name)}){

       if(page == null){

           page = 1;

       }

       if(page <= 0){

           page = 1;

       }

       if(limit == null){

           limit = 10;

       }

       PageHelper.startPage(page,limit);

       List<$!{tableInfo.name}> $!{tool.firstLowerCase($tableInfo.name)}List = $!{tool.firstLowerCase($tableInfo.name)}Service.queryAll($!{tool.firstLowerCase($tableInfo.name)});

       PageInfo<$!{tableInfo.name}> pageInfo = new PageInfo<>($!{tool.firstLowerCase($tableInfo.name)}List);

       return Result.success(pageInfo);

   }



   /**

    * 插入

    * @param $!{tool.firstLowerCase($tableInfo.name)} 实体

    * @return Result

    */

   @PostMapping("insert")

   public Result insert(@RequestBody $!{tableInfo.name} $!{tool.firstLowerCase($tableInfo.name)}){

       $!{tool.firstLowerCase($tableInfo.name)}Service.insert($!{tool.firstLowerCase($tableInfo.name)});

       return Result.success();

   }


   /**

    * 更新

    * @param $!{tool.firstLowerCase($tableInfo.name)} 实体

    * @return Result

    */

   @PostMapping("update")

   public Result update(@RequestBody $!{tableInfo.name} $!{tool.firstLowerCase($tableInfo.name)}){

       $!{tool.firstLowerCase($tableInfo.name)}Service.update($!{tool.firstLowerCase($tableInfo.name)});

       return Result.success();

   }


   /**

    * 更新

    * @param id id

    * @return Result

    */

   @GetMapping("del")

   public Result del(@RequestParam(required = true) Integer id){

       $!{tool.firstLowerCase($tableInfo.name)}Service.deleteById(id);

       return Result.success();

   }


}


相关文章
|
2月前
|
XML Java 数据格式
推荐一款idea中MybatisX 快速开发插件
推荐一款idea中MybatisX 快速开发插件
18 0
|
3月前
|
Java 关系型数据库 MySQL
idea自动生成代码插件EasyCode
idea自动生成代码插件EasyCode
|
7月前
|
机器学习/深度学习 人工智能 Java
《IDEA 2023常用插件安装与全局配置教程大全》——提升你的开发效率
《IDEA 2023常用插件安装与全局配置教程大全》——提升你的开发效率
784 0
|
4月前
|
SQL IDE 开发工具
好用的MybatisX插件~
好用的MybatisX插件~
|
5月前
IDEA常用插件之注解插件
IDEA常用插件之注解插件
185 0
|
7月前
|
Java 数据库连接 Go
IDEA2022插件:EasyCode一键生成增删改查代码
IDEA2022插件:EasyCode一键生成增删改查代码
121 0
|
9月前
idea自动生成代码插件EasyCode 篇二
idea自动生成代码插件EasyCode介绍第二篇
149 0
|
9月前
|
Java 关系型数据库 MySQL
idea自动生成代码插件EasyCode 篇一
idea自动生成代码插件EasyCode介绍第一篇
372 0
|
存储 程序员 开发工具
IDEA插件开发.02之“异味”代码收集插件
许久没更新IDEA插件开发系列了。最近刚好在汇总日常开发中常见的代码“异味”,共享文档复制黏贴略显麻烦,所以想着是否可以搞一个IDEA插件来帮忙收集常见代码,毕竟IDEA作为后端程序员必备的开发工具,显然会方便很多。
157 1
IDEA插件开发.02之“异味”代码收集插件
|
搜索推荐 Java 数据库连接
eclipse的配置、快捷键、项目导入导出、常见的插件或代码生成器工具
eclipse的配置、快捷键、项目导入导出、常见的插件或代码生成器工具
252 0
eclipse的配置、快捷键、项目导入导出、常见的插件或代码生成器工具