专栏首页大数据实战演练懒人:使用 idea 插件 Easy Code 自定义 MybatisPlus 模板一键快速生成所需代码

懒人:使用 idea 插件 Easy Code 自定义 MybatisPlus 模板一键快速生成所需代码

每一个成功人士的背后,必定曾经做出过勇敢而又孤独的决定。

放弃不难,但坚持很酷~

之前无意中了解到了 idea 中的 Easy Code 插件,说是能快速生成 entity 、mapper、service、controller 等文件,避免很多简单重复性的创建工作,大大提高 MySQL 增删改查的开发效率。 正好今天要做对 MySQL 的增删改查,想着试试这个插件,没想到,特别好用,但也需要自己定制,所以就有了这篇文章,分享如何使用 idea Easy Code 插件配置 Mybatis Plus 模板来提高对 MySQL 的开发效率的。

一、idea 安装 Easy Code 插件

安装完成后,需要重启 idea 生效。

二、使用 idea 连接 MySQL 数据库

配置连接数据库步骤:

View --> Tool Windows --> Database

然后,新建 MySQL 连接,最后如下图所示:

连接成功后,这时候我们可以选择其中一个表,右键:EasyCode --> Generate Code,来快速生成 entity 、mapper、service、controller 等文件。如下图所示:

但是,这样会生成挺多文件,挺多内容的,乱七八糟。有的内容我并不想要,所以我们需要配置 Easy Code 自定义宏操作模板。

三、配置 Easy Code 生成模板

点击 File --> Settings --> Other Settings --> Easy Code --> Template Setting,如下图所示:

我们可以新建 Group,创建宏操作来自动生成 entity 、mapper、service、controller、mapper.xml 等文件。

3.1、entity

##导入宏定义
$!define

##保存文件(宏定义)
#save("/entity", ".java")

##包路径(宏定义)
#setPackageSuffix("entity")

##自动导入包(全局变量)
$!autoImport
import com.baomidou.mybatisplus.extension.activerecord.Model;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import lombok.EqualsAndHashCode;

import java.io.Serializable;

##表注释(宏定义)
##tableComment("表实体类")
/**
 * $!{tableInfo.comment}($!{tableInfo.name})表实体类
 * 
 * @author liuyzh
 * @since $!time.currTime()
 */
@EqualsAndHashCode(callSuper = true)
@Data
@ApiModel(description = "")
@SuppressWarnings("serial")
public class $!{tableInfo.name} extends Model<$!{tableInfo.name}> implements Serializable {
    private static final long serialVersionUID = $!tool.serial();
#foreach($column in $tableInfo.fullColumn)
    ##if(${column.comment})/**
    ##* ${column.comment}
    ##*/#end

    @ApiModelProperty("$column.comment")
    private $!{tool.getClsNameByFullName($column.type)} $!{column.name};
#end
}

3.2、mapper

##定义初始变量
#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 com.baomidou.mybatisplus.core.mapper.BaseMapper;

/**
 * $!{tableInfo.comment}($!{tableInfo.name})表数据库访问层
 *
 * @author liuyzh
 * @since $!time.currTime()
 */
public interface $!{tableName} extends BaseMapper<$!{tableInfo.name}>{

}

3.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 com.baomidou.mybatisplus.extension.service.IService;
import $!{tableInfo.savePackageName}.entity.$!{tableInfo.name};

/**
 * $!{tableInfo.comment}($!{tableInfo.name})表服务接口层
 *
 * @author liuyzh
 * @since $!time.currTime()
 */
public interface $!{tableInfo.name}Service extends IService<$!{tableInfo.name}>{

}

3.4、serviceImpl

##导入宏定义
$!define

##设置表后缀(宏定义)
#setTableSuffix("ServiceImpl")

##保存文件(宏定义)
#save("/service/impl", "ServiceImpl.java")

##包路径(宏定义)
#setPackageSuffix("service.impl")

import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import $!{tableInfo.savePackageName}.mapper.$!{tableInfo.name}Mapper;
import $!{tableInfo.savePackageName}.entity.$!{tableInfo.name};
import $!{tableInfo.savePackageName}.service.$!{tableInfo.name}Service;
import org.springframework.stereotype.Service;

##表注释(宏定义)
##tableComment("表服务实现类")
/**
 * $!{tableInfo.comment}($!{tableInfo.name})表服务实现类
 *
 * @author liuyzh
 * @since $!time.currTime()
 */
@Service
public class $!{tableInfo.name}ServiceImpl extends ServiceImpl<$!{tableInfo.name}Mapper, $!{tableInfo.name}> implements $!{tableInfo.name}Service {

}

3.5、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}.service.$!{tableInfo.name}Service;
import io.swagger.annotations.Api;
import lombok.AllArgsConstructor;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.*;
import javax.annotation.Resource;

/**
 * $!{tableInfo.comment}($!{tableInfo.name})表服务控制层
 *
 * @author liuyzh
 * @since $!time.currTime()
 */
@Api(tags = "$!{tableInfo.comment}($!{tableInfo.name})") 
@Validated
@RestController
@AllArgsConstructor
@RequestMapping("$!tool.firstLowerCase($tableInfo.name)")
public class $!{tableName} {
    @Resource
    private final $!{tableInfo.name}Service $!tool.firstLowerCase($tableInfo.name)Service;

}

3.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>

</mapper>

四、添加类型映射

点击 File --> Settings --> Other Settings --> Easy Code --> Type Mapper,如下图所示:

在我们生成类文件之前,我们也可以在 idea 的 Database 中的 某个表 中,右键:EasyCode --> Config Table,来修改字段类型和字段备注等。

五、快速生成代码

点击 idea 的 Database,选择其中一个表,右键:EasyCode --> Generate Code,来快速生成 entity 、mapper、service、controller 等文件。如下图所示:

其中 Package 路径为 Application 类的根路径。点击 "OK",实现代码的快速生成。

这个 Easy Code 插件,配合着自己定义的宏操作,用的确实太爽了,解放劳动力啊。生成完代码之后,我们只需要在其中写业务代码即可。


点关注,不迷路

好了各位,以上就是这篇文章的全部内容了,能看到这里的人呀,都是人才

白嫖不好,创作不易。 各位的支持和认可,就是我创作的最大动力,我们下篇文章见!

如果本篇博客有任何错误,请批评指教,不胜感激 !

本文分享自微信公众号 - 大数据实战演练(gh_f942bfc92d26),作者:CREATE 17

原文出处及转载信息见文内详细说明,如有侵权,请联系 yunjia_community@tencent.com 删除。

原始发表时间:2020-05-19

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • ambari-web/admin 前端二次开发

    ambari-web可以单独编译,用来修改ambari UI页面。采用ember.js(版本: v1.0.pre)作为前端MVC框架和NodeJS相关工具,用h...

    create17
  • 两种实现方式 | 如何查看消费者组的消费情况

    本文提供两种方式来查看消费者组的消费情况,分别通过命令行和 java api 的方式来消费 __consumer_offsets 。

    create17
  • Java版SMS4加密解密算法

    最近工作中需要实现HBase自定义扩展sms4加密,今天就先来说一下Java版的SMS4加密解密算法的具体实现。

    create17
  • 腾讯云 Elasticsearch 进阶篇(二十五)Logstash讲解与实战

    logstash之所以功能强大和流行,还与其丰富的过滤器插件是分不开的,过滤器提供的并不单单是过滤的功能,还可以对进入过滤器的原始数据进行复杂的逻辑处理...

    南非骆驼说大数据
  • MarkDuplicates 的意义与作用

    在数据预处理中,有一个很重要的步骤就是MarkDuplicates, 字面意思就是标记重复序列。重复序列是如何产生的,为什么要标记重复序列呢? 首先来看重复序列...

    生信修炼手册
  • 毕业两年的反思

    到今年6月份,已经毕业两年了,在这两年中换过一家公司,从银行外包到安全行业,经历过加班,也经历过无所事事,心中有些感慨和想法与大家分享

    Masimaro
  • 人脸识别简介(使用Python代码)

    人脸识别是计算机视觉的一个子领域,它的应用范围非常广泛,现在已经成为世界各地的企业争相竞逐的新技术之一。考虑到市场的盈利现状,未来这项技术还会有更大的需求空间,...

    小小詹同学
  • C#常用的IO操作方法

    public class IoHelper { /// <summary> /// 判断文件是否存在 /...

    彭泽0902
  • Python字典按键/值排序的几种方法

    同理,如果我们只需要对sort_by_value稍微修改一下,就可以得到按值排序的结果:

    宇宙之一粟
  • 【框架】谷歌开源发布OpenCensus:一个统计数据收集和分布式跟踪框架

    昨天谷歌发布了OpenCensus,这是一个厂商中立的开放源码库,用于度量收集和跟踪。OpenCensus的构建是为了增加最小的开销,并部署在整个团队中,特别是...

    AiTechYun

扫码关注云+社区

领取腾讯云代金券