idea的easyCode的 MybatisPlus模板的配置详解

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<$!tableInfo.name> 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<Long> 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<$!{tableInfo.name}Dao, $!{tableInfo.name}> 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<$!tableInfo.name> {

}

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<$!tableInfo.name> {

}

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<$!{tableInfo.name}> {
 @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配置内容请搜索我们以前的文章或继续浏览下面的相关文章希望大家以后多多支持我们!

(0)

相关推荐

  • 详解在IDEA中使用MyBatis Generator逆向工程生成代码

    本文介绍一下用Maven工具如何生成Mybatis的代码及映射的文件. 一.配置Maven pom.xml 文件 在pom.xml增加以下插件: <build> <finalName>zsxt</finalName> <plugins> <plugin> <groupId>org.mybatis.generator</groupId> <artifactId>mybatis-generator-maven-pl

  • IntelliJ IDEA(2019)之mybatis反向生成的实现

    mybatis的逆向工程是非常便捷的操作,能够显著的提高我们的开发效率,之前介绍过Eclipse的操作,本文来介绍下在idea中怎么处理. mybatis逆向工程 1.配置文件 在resources目录下创建配置文件,具体如下: <?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE generatorConfiguration PUBLIC "-//mybatis.org//DTD MyBati

  • IDEA mybatis-generator逆向工程生成代码

    1.在maven工程中的resource中创建generatorConfig.xml 2.配置generatorConfig.xml <?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE generatorConfiguration PUBLIC "-//mybatis.org//DTD MyBatis Generator Configuration 1.0//EN" "ht

  • IDEA Maven Mybatis generator 自动生成代码(实例讲解)

    IDEA Maven Mybatis generator 自动生成代码的实例讲解 一.安装配置maven以及在Idea中配置maven 安装过程步骤可以看上面的博文,里面介绍得很详细. 二.建数据表 DROP TABLE IF EXISTS `t_user`; CREATE TABLE `t_user` ( `id` varchar(100) NOT NULL, `username` varchar(20) DEFAULT NULL, `password` varchar(20) DEFAULT

  • 去掉 IDEA 中 mybatis配置文件的局部背景颜色(图解)

    一. 问题情况 mybatis.xml 出现部分背景颜色,如何去掉 二.解决方案 第一步:在settings (设置)中 找到inspections(检查).按照图片中那样去掉两个勾选项(No data sources configured 和  SQL dialect detection) 第二步: 去掉背景 下面给大家介绍去掉IntelliJ IDEA 中 mybatis 对应的 xml 文件警告的方法图解,具体方法如下所述: IntelliJ IDEA 打开 mybatis 的 xml 文

  • IDEA版最新MyBatis程序配置教程详解

    实验环境:IDEA2020.1+MySQL8.0.21+Mybatis3.5.5+Junit4.13 搭建环境–>导入Mybatis->编写代码->测试 1.搭建实验数据库 我们创建一个mybatis实验数据库,并创建一个user表为后续实验准备 CREATE DATABASE `mybatis`; USE `mybatis`; CREATE TABLE `user`( `id` INT(4) NOT NULL PRIMARY key, `name` VARCHAR(20) NOT NU

  • IDEA集成MyBatis Generator插件的使用

    1.修改maven的pom文件 只需要将如下依赖添加到pom.xml文件中即可.(注意此处是以plugin的方式,放在<plugins> </plugins>中间即可) <plugin> <groupId>org.mybatis.generator</groupId> <artifactId>mybatis-generator-maven-plugin</artifactId> <version>1.3.2&l

  • idea mybatis配置log4j打印sql语句的示例

    在IDEA中配置log4j,步骤很简单 1.在Maven中加入以下配置 <dependency> <groupId>commons-logging</groupId> <artifactId>commons-logging</artifactId> <version>1.2</version> </dependency> <dependency> <groupId>log4j</g

  • Intellij Idea中进行Mybatis逆向工程的实现

    开篇 Mybatis有个实用的功能就是逆向工程,能根据表结构反向生成实体类,这样能避免手工生成出错.市面上的教程大多都很老了,大部分都是针对mysql5的,以下为我执行mysql8时的经验. 引入工程 这里使用的是maven包管理工具,在pom.xml添加以下配置,以引入mybatis.generator <build> <finalName>SpringMVCBasic</finalName> <!-- 添加mybatis-generator-maven-plu

  • idea的easyCode的 MybatisPlus模板的配置详解

    EasyCode 插件 EasyCode 插件 是一款根据表结构生成代码的很方便的Idea插件, 强烈推荐. 并且可以自定义模板来控制生成的类  我在使用的过程中发现一些问题,现在把解决办法记录下来, 我主要使用的是插件自带的mybatisplus模板 1. 生成的代码中有大量的get set方法 lombok 插件是个好东西, 我删除了模板中的get和set方法, 添加了lombok 的注解, ' 2. 如果数据库中的表都有前缀"t_" 导致生成的类名中都有一个前缀 "T&

  • MyBatis-Plus Generator配置详解

    本文仅对使用MyBatis-Plus的代码生成器配置做保存,适合使用了该插件的童鞋做参考. 内部有大量默认配置,有性趣的童鞋可以研究下源码. ps:官方文档更齐全http://mp.baomidou.com/ package com.kichun.ucenter.service; import com.baomidou.mybatisplus.generator.AutoGenerator; import com.baomidou.mybatisplus.generator.InjectionC

  • mybatis-plus在yml中配置详解

    目录 pom配置 正常使用基础配置 扩展配置 pom配置 <dependency> <groupId>com.baomidou</groupId> <artifactId>mybatis-plus-boot-starter</artifactId> <version>3.5.1</version> </dependency> 正常使用基础配置 mybatis-plus: # 包扫描路径(当前项目的实体类所在位置

  • MyBatis-Plus代码生成器的使用详解

    1.引入依赖 <!--mybatisplus依赖--> <dependency> <groupId>com.baomidou</groupId> <artifactId>mybatis-plus-boot-starter</artifactId> <version>3.0.5</version> </dependency> <!--代码生成模板--> <dependency>

  • SpringBoot项目使用mybatis-plus代码生成的实例详解

    目录 前言 安装依赖 application.yml添加配置 代码生成实例 代码生成依赖 数据源配置 globalConfig处理通用配置 packageConfig包名设置 strategyConfig配置 小结 总结 前言 mybatis-plus官方地址 https://baomidou.com mybatis-plus是mybatis的增强,不对mybatis做任何改变,涵盖了代码生成,自定义ID生成器,快速实现CRUD,自动分页,逻辑删除等功能,更多功能请查阅官方文档 安装依赖 myb

  • Struts 2中的constant配置详解

    1.<constant name="struts.i18n.encoding" value="UTF-8" /> 指定Web应用的默认编码集,相当于调用 HttpServletRequest的setCharacterEncoding方法. 2.<constant name="struts.i18n.reload" value="false"/> 该属性设置是否每次HTTP请求到达时,系统都重新加载资源文

  • spark之Standalone模式部署配置详解

    spark运行模式 Spark 有很多种模式,最简单就是单机本地模式,还有单机伪分布式模式,复杂的则运行在集群中,目前能很好的运行在 Yarn和 Mesos 中,当然 Spark 还有自带的 Standalone 模式,对于大多数情况 Standalone 模式就足够了,如果企业已经有 Yarn 或者 Mesos 环境,也是很方便部署的. 1.local(本地模式):常用于本地开发测试,本地还分为local单线程和local-cluster多线程; 2.standalone(集群模式):典型的M

  • Spring Web MVC和Hibernate的集成配置详解

    网上看到很多关于Spring与Hibernate的集成的文章,奈何由于那些文章写作时间较早,很多都是Spring 3 和Hibernate 4等较旧的版本.所以我在这里使用更新的版本来说明一下. 添加项目依赖 首先我们需要一个Java Web项目,最好使用Maven或Gradle构建工具,方便我们解决软件依赖.我在这里使用Gradle构建工具,构建脚本如下.我们只要引入spring-webmvc和spring-orm这两个包,其他的Spring依赖会自动由构建工具解决.然后还需要引入数据源.Hi

  • Vue-cli3多页面配置详解

    Vue-cli3发布已经好长时间了,笔者也在一直使用,由于公司业务需要要使用多页面配置,于是花时间研究了一下Vue-cli3如何配置多页面.由于Vue-cli3相比之前的版本做了很大的改动,在研究过程中也遇到一些问题. 对于Vue-cli3创建项目这里就不做太多的赘述了,毕竟不属于本文内容,有关相关博客也有很多,大家可以自行Google一下就好了. 多页面应用(mpa)与单页面应用(spa)优缺点 在项目中我们用到的大多数都是单页面应用(spa),对于多页面可能用到的比较少一些,具体还是要根据具

  • win10+VS2017+Cuda10.0环境配置详解

    一.安装 1.1硬件支持 首先确定你的电脑显卡是支持Cuda安装的. 右键"我的电脑",然后点击"设备管理器".在显示适配器里可以查看显卡型号. 如果包含在官网列表 中,则可以点击对应的型号到下载界面下载Cuda安装包. 1.2 安装VS2017 官网下载VS2017,并安装. 1.3 安装Cuda 在安装过程中,会自动检测本机是否已经安装了配套的VS版本其中之一,如果VS版本和Cuda版本不匹配的话,安装无法进行. ( 另外,如果电脑安装了360杀毒的话,安装过程

随机推荐