EasyCode 插件

EasyCode 插件 是一款根据表结构生成代码的很方便的Idea插件, 强烈推荐. 并且可以自定义模板来控制生成的类

我在使用的过程中发现一些问题,现在把解决办法记录下来, 我主要使用的是插件自带的mybatisplus模板

1. 生成的代码中有大量的get set方法

lombok 插件是个好东西, 我删除了模板中的get和set方法, 添加了lombok 的注解, '

2. 如果数据库中的表都有前缀"t_" 导致生成的类名中都有一个前缀 “T”

这个问题困扰我很久,改了各种模板 , 最后发现把init文件的第一行代码复制到define文件的第一行就可以, init文件根本就没有用.

3, 生成的类中没有DTO对象

直接把entity模板文件复制一份改改就有了

下面分享下我修改后的模板

Template Setting 配置项 Group Name : MybatisPlus

如果没有MybatisPlus 的group name, 可以新增一个

dto文件

##导入宏定义

$!define

##保存文件(宏定义)

#save("/dto", "DTO.java")

##包路径(宏定义)

#setPackageSuffix("dto")

##自动导入包(全局变量)

$!autoImport

##import com.baomidou.mybatisplus.extension.activerecord.Model;

import java.io.Serializable;

import lombok.Data;

##import com.baomidou.mybatisplus.annotation.IdType;

##import com.baomidou.mybatisplus.annotation.TableId;

##表注释(宏定义)

#tableComment("表实体类")

@Data

@SuppressWarnings("serial")

public class $!{tableInfo.name}DTO implements Serializable {

#foreach($column in $tableInfo.fullColumn)

#if(${column.comment})/**${column.comment}*/#end

private $!{tool.getClsNameByFullName($column.type)} $!{column.name};

#end

###foreach($column in $tableInfo.fullColumn)

## #getSetMethod($column)

###end

###foreach($column in $tableInfo.pkColumn)

## /**

## * 获取主键值

## *

## * @return 主键值

## */

## @Override

## protected Serializable pkVal() {

## return this.$!column.name;

## }

## #break

###end

}

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

import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;

import com.baomidou.mybatisplus.extension.api.ApiController;

import com.baomidou.mybatisplus.extension.api.R;

import com.baomidou.mybatisplus.extension.plugins.pagination.Page;

import $!{tableInfo.savePackageName}.entity.$!tableInfo.name;

import $!{tableInfo.savePackageName}.service.$!{tableInfo.name}Service;

import org.springframework.web.bind.annotation.*;

import javax.annotation.Resource;

import java.io.Serializable;

import java.util.List;

##表注释(宏定义)

#tableComment("表控制层")

@RestController

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

public class $!{tableName} extends ApiController {

/**

* 服务对象

*/

@Resource

private $!{tableInfo.name}Service $!{serviceName};

/**

* 分页查询所有数据

*

* @param page 分页对象

* @param $!entityName 查询实体

* @return 所有数据

*/

@GetMapping

public R selectAll(Page page, $!tableInfo.name $!entityName) {

return success(this.$!{serviceName}.page(page, new QueryWrapper<>($!entityName)));

}

/**

* 通过主键查询单条数据

*

* @param id 主键

* @return 单条数据

*/

@GetMapping("{id}")

public R selectOne(@PathVariable Serializable id) {

return success(this.$!{serviceName}.getById(id));

}

/**

* 新增数据

*

* @param $!entityName 实体对象

* @return 新增结果

*/

@PostMapping

public R insert(@RequestBody $!tableInfo.name $!entityName) {

return success(this.$!{serviceName}.save($!entityName));

}

/**

* 修改数据

*

* @param $!entityName 实体对象

* @return 修改结果

*/

@PutMapping

public R update(@RequestBody $!tableInfo.name $!entityName) {

return success(this.$!{serviceName}.updateById($!entityName));

}

/**

* 删除数据

*

* @param idList 主键结合

* @return 删除结果

*/

@DeleteMapping

public R delete(@RequestParam("idList") List idList) {

return success(this.$!{serviceName}.removeByIds(idList));

}

}

serviceImpl 文件

##导入宏定义

$!define

##设置表后缀(宏定义)

#setTableSuffix("ServiceImpl")

##保存文件(宏定义)

#save("/service/impl", "ServiceImpl.java")

##包路径(宏定义)

#setPackageSuffix("service.impl")

import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;

import $!{tableInfo.savePackageName}.dao.$!{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 implements $!{tableInfo.name}Service {

}

service文件

##导入宏定义

$!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 {

}

dao文件

##导入宏定义

$!define

##设置表后缀(宏定义)

#setTableSuffix("Dao")

##保存文件(宏定义)

#save("/dao", "Dao.java")

##包路径(宏定义)

#setPackageSuffix("dao")

import com.baomidou.mybatisplus.core.mapper.BaseMapper;

import $!{tableInfo.savePackageName}.entity.$!tableInfo.name;

##表注释(宏定义)

#tableComment("表数据库访问层")

public interface $!{tableName} extends BaseMapper {

}

entity 文件

##导入宏定义

$!define

##保存文件(宏定义)

#save("/entity", ".java")

##包路径(宏定义)

#setPackageSuffix("entity")

##自动导入包(全局变量)

$!autoImport

import com.baomidou.mybatisplus.extension.activerecord.Model;

import java.io.Serializable;

import lombok.Data;

import com.baomidou.mybatisplus.annotation.IdType;

import com.baomidou.mybatisplus.annotation.TableId;

##表注释(宏定义)

#tableComment("表实体类")

@Data

@SuppressWarnings("serial")

public class $!{tableInfo.name} extends Model {

@TableId(type = IdType.AUTO)

#foreach($column in $tableInfo.fullColumn)

#if(${column.comment})/**${column.comment}*/#end

private $!{tool.getClsNameByFullName($column.type)} $!{column.name};

#end

###foreach($column in $tableInfo.fullColumn)

## #getSetMethod($column)

###end

#foreach($column in $tableInfo.pkColumn)

/**

* 获取主键值

*

* @return 主键值

*/

@Override

protected Serializable pkVal() {

return this.$!column.name;

}

#break

#end

}

Global Config 配置项 Group Name : Default

下面的文件都是Group Name 为 Default 的

mybatisSupport 文件

##针对Mybatis 进行支持,主要用于生成xml文件

#foreach($column in $tableInfo.fullColumn)

##储存列类型

$tool.call($column.ext.put("sqlType", $tool.getField($column.obj.dataType, "typeName")))

#if($tool.newHashSet("java.lang.String").contains($column.type))

#set($jdbcType="VARCHAR")

#elseif($tool.newHashSet("java.lang.Boolean", "boolean").contains($column.type))

#set($jdbcType="BOOLEAN")

#elseif($tool.newHashSet("java.lang.Byte", "byte").contains($column.type))

#set($jdbcType="BYTE")

#elseif($tool.newHashSet("java.lang.Integer", "int", "java.lang.Short", "short").contains($column.type))

#set($jdbcType="INTEGER")

#elseif($tool.newHashSet("java.lang.Long", "long").contains($column.type))

#set($jdbcType="INTEGER")

#elseif($tool.newHashSet("java.lang.Float", "float", "java.lang.Double", "double").contains($column.type))

#set($jdbcType="NUMERIC")

#elseif($tool.newHashSet("java.util.Date", "java.sql.Timestamp", "java.time.Instant", "java.time.LocalDateTime", "java.time.OffsetDateTime", " java.time.ZonedDateTime").contains($column.type))

#set($jdbcType="TIMESTAMP")

#elseif($tool.newHashSet("java.sql.Date", "java.time.LocalDate").contains($column.type))

#set($jdbcType="TIMESTAMP")

#else

##其他类型

#set($jdbcType="OTHER")

#end

$tool.call($column.ext.put("jdbcType", $jdbcType))

#end

##定义宏,查询所有列

#macro(allSqlColumn)#foreach($column in $tableInfo.fullColumn)$column.obj.name#if($velocityHasNext), #end#end#end

autoImport 文件

##自动导入包(仅导入实体属性需要的包,通常用于实体类)

#foreach($import in $importList)

import $!import;

#end

define 文件

##(Velocity宏定义)

## 去掉表的t_前缀

$!tableInfo.setName($tool.getClassName($tableInfo.obj.name.replaceFirst("t_","")))

##定义设置表名后缀的宏定义,调用方式:#setTableSuffix("Test")

#macro(setTableSuffix $suffix)

#set($tableName = $!tool.append($tableInfo.name, $suffix))

#end

##定义设置包名后缀的宏定义,调用方式:#setPackageSuffix("Test")

#macro(setPackageSuffix $suffix)

#if($suffix!="")package #end#if($tableInfo.savePackageName!="")$!{tableInfo.savePackageName}.#{end}$!suffix;

#end

##定义直接保存路径与文件名简化的宏定义,调用方式:#save("/entity", ".java")

#macro(save $path $fileName)

$!callback.setSavePath($tool.append($tableInfo.savePath, $path))

$!callback.setFileName($tool.append($tableInfo.name, $fileName))

#end

##定义表注释的宏定义,调用方式:#tableComment("注释信息")

#macro(tableComment $desc)

/**

* $!{tableInfo.comment}($!{tableInfo.name})$desc

*

* @author $!author

* @since $!time.currTime()

*/

#end

##定义GET,SET方法的宏定义,调用方式:#getSetMethod($column)

#macro(getSetMethod $column)

public $!{tool.getClsNameByFullName($column.type)} get$!{tool.firstUpperCase($column.name)}() {

return $!{column.name};

}

public void set$!{tool.firstUpperCase($column.name)}($!{tool.getClsNameByFullName($column.type)} $!{column.name}) {

this.$!{column.name} = $!{column.name};

}

#end

init 文件

##初始化区域

##去掉表的t_前缀

$!tableInfo.setName($tool.getClassName($tableInfo.obj.name.replaceFirst("t_","")))

##参考阿里巴巴开发手册,POJO 类中布尔类型的变量,都不要加 is 前缀,否则部分框架解析会引起序列化错误

#foreach($column in $tableInfo.fullColumn)

#if($column.name.startsWith("is") && $column.type.equals("java.lang.Boolean"))

$!column.setName($tool.firstLowerCase($column.name.substring(2)))

#end

#end

##实现动态排除列

#set($temp = $tool.newHashSet("testCreateTime", "otherColumn"))

#foreach($item in $temp)

#set($newList = $tool.newArrayList())

#foreach($column in $tableInfo.fullColumn)

#if($column.name!=$item)

##带有反回值的方法调用时使用$tool.call来消除返回值

$tool.call($newList.add($column))

#end

#end

##重新保存

$tableInfo.setFullColumn($newList)

#end

##对importList进行篡改

#set($temp = $tool.newHashSet())

#foreach($column in $tableInfo.fullColumn)

#if(!$column.type.startsWith("java.lang."))

##带有反回值的方法调用时使用$tool.call来消除返回值

$tool.call($temp.add($column.type))

#end

#end

##覆盖

#set($importList = $temp)

到此这篇关于idea的easyCode的 MybatisPlus模板的配置详解的文章就介绍到这了,更多相关idea easyCode MybatisPlus配置内容请搜索我们以前的文章或继续浏览下面的相关文章希望大家以后多多支持我们!

时间: 2020-09-05

easycode 表配置_idea的easyCode的 MybatisPlus模板的配置详解相关推荐

  1. 华为交换机端口不配置access_华为交换机的配置及:access、trunk、hybird端口详解...

    原标题:华为交换机的配置及:access.trunk.hybird端口详解 很多人朋友多次问到华为交换机的配置,确实用的比较多,上次我们有单独提到h3c交换机的配置,今天我们来了解下华为交换机的配置, ...

  2. 华为交换机的配置及:access、trunk、hybird端口详解

    今天我们来了解下华为交换机的配置,以及以太网的三种链路方式. 为了让大家更加清楚,每行代码都有解释. 一.华为交换机的基本配置 1.创建vlan: <Quidway> //用户视图,也就是 ...

  3. IDEA2019版最新配置SVN及上传教程-超详细图文详解

    IDEA2019版配置SVN图文详解 1. 查看svn仓库 调出svn视图: 连接svn服务器: 连接后效果如下: 补充:如果输入正确的连接地址后出现错误-系统找不到指定的文件 请到设置中检查(Fil ...

  4. 2 数据源配置_[Mybatis]-[基础支持层]-数据源信息-数据源详解

    该系列文章针对 Mybatis 3.5.1 版本 在上一篇文章中,谈到了 <environment> 标签解析会构建 Environment 对象,Environment 对象中有两个关键 ...

  5. ShardingSphere分库分表核心原理精讲第十一节 分布式事务详解

    27 分布式事务:如何理解 ShardingSphere 中对分布式事务的抽象过程? 从今天开始,我们将进入一个全新模块,即ShardingSphere 分布式事务.这是一个非常重要的主题,我们将通过 ...

  6. ShardingSphere分库分表核心原理精讲第十二节 数据安全和脱敏详解

    本资源由 itjc8.com 收集整理 今天,我们讨论 ShardingSphere 中的数据脱敏模块.通过在 "10 | 数据脱敏:如何确保敏感数据的安全访问?" 课时中的介绍, ...

  7. yum安装的mysql8在同一台机器上实现主从配置部署(同一台主机)(图文详解)

    首先你使用yum安装了mysql8,还不会安装?(看我其他帖子内容)贼简单 CentOS7用yum安装MySQL8及各个版本_xiaomaomixj的博客-CSDN博客 我们首先部署一下主从配置的环境 ...

  8. springboot配置jasypt实现对配置文件敏感信息加密全流程详解

    1.引入依赖 <dependency><groupId>com.github.ulisesbocchio</groupId><artifactId>ja ...

  9. python 读取excel表数据获取坐标_python读取并定位excel数据坐标系详解

    测试数据:坐标数据:testExcelData.xlsx 使用python读取excel文件需要安装xlrd库: xlrd下载后的压缩文件:xlrd-1.2.0.tar.gz 解压后再进行安装即可,具 ...

最新文章

  1. java 两个值对换_java将两个整型变量值进行互换的几种实现方法
  2. DARPA人工智能技术研究情况一览
  3. leetcode18
  4. 文档生成组件工作估算
  5. Spring aop面向切面编程概述
  6. HDU 4336 Card Collector(状压 + 概率DP 期望)题解
  7. iPhone 大降价;谷歌再爆丑闻;京东云金山云回应合并传闻 | 极客头条
  8. sql collection内容_非关系数据库复习|SQL到mongoDB查询语句转换
  9. WinForm与WPF下跨线程调用控件
  10. schema的详解2
  11. Java初学01:学习路线,韩顺平java教程百度云
  12. 谷歌李开复 我的传奇人生源于十句箴言
  13. python3 append的用法_python中append的用法
  14. 前端图片放大缩小/比例自适应/打码/码大小可调整
  15. 沐风:了不起的便利店
  16. Android 之Google认证GMS详细解剖
  17. POJO 与javaBean(普通bean和EJB)
  18. UEditor编辑器修改ueditor.all.js后压缩的问题
  19. 因子分析累计贡献率_[2018年最新整理]多元统计分析之因子分析.doc
  20. chrome 54字体变大问题解决方案

热门文章

  1. Workflow之Activity
  2. silverlight动态添加xaml物件
  3. 华为公司参加2006 CCBN广电信息网络展览会
  4. java shutdowninput,java中socket.shutdownOutput()使用后如果还想用输出流怎么办
  5. 微软自带报ocienvcreate失败_微软推出的免费神器,治好了我的拖延症!
  6. 高质量UI面试作品模板,大大提高通过效率
  7. 关掉内核线程linux,c – 如何在rmmod上停止Linux内核线程?
  8. java之点击一次之后失效_JavaScript 事件绑定只能执行一次了,再次点击就变得无效 ,求助怎么回事...
  9. 配置的android版本,Android SDK配置(V3.0.0及以上版本)
  10. 为什么c语言乘除法优先级低,C语言训练题.docx