我的编程空间,编程开发者的网络收藏夹
学习永远不晚

IDEA必备开发神器之EasyCode

短信预约 -IT技能 免费直播动态提醒
省份

北京

  • 北京
  • 上海
  • 天津
  • 重庆
  • 河北
  • 山东
  • 辽宁
  • 黑龙江
  • 吉林
  • 甘肃
  • 青海
  • 河南
  • 江苏
  • 湖北
  • 湖南
  • 江西
  • 浙江
  • 广东
  • 云南
  • 福建
  • 海南
  • 山西
  • 四川
  • 陕西
  • 贵州
  • 安徽
  • 广西
  • 内蒙
  • 西藏
  • 新疆
  • 宁夏
  • 兵团
手机号立即预约

请填写图片验证码后获取短信验证码

看不清楚,换张图片

免费获取短信验证码

IDEA必备开发神器之EasyCode

1、打开IntelliJ IDEA 新建一个maven工程

2、选择工程存放目录

3、下载安装EasyCode插件

file->settings->plugins 搜索Easy Code

搜索到后点击Install 我这里安装过了 安装完成会让你重启IDEA。

如何判断是否安装成功 file->settings->Other settings 看是否有Easy Code这个选项

4、引入Easy Code模板 (可以根据个人情况定制 也可以使用默认的)

5、创建数据库,数据表

6、配置数据源(需要指定数据库名称,要生成数据表)

点击IDEA右侧的Datbase->点击上方的加号->选择Data Source.->Mysql

7、配置数据源

注意:连接方式需要采用mysql8的连接方式,不然可能连接失败jdbc:mysql://localhost:3306/table?useUnicode=true&characterEncoding=utf-8&serverTimezone=UTC&useSSL=false

8、连接成功如图所示

9、引入springboot的相关pom.xml依赖


<dependencies>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>
        <dependency>
            <groupId>org.mybatis.spring.boot</groupId>
            <artifactId>mybatis-spring-boot-starter</artifactId>
            <version>1.3.2</version>
        </dependency>
         <dependency>
            <groupId>mysql</groupId>
            <artifactId>mysql-connector-java</artifactId>
            <version>5.1.38</version>
        </dependency>
    </dependencies>

需要用到mybatis的启动器,所以也一起引用

10、打开Easy Code插件 选要生成的entity,controller,service,serviceimpl,dao

右击表名->Easy Code->Generate Code

Module:当前项目模块

package:生成代码存放包的位置

Template:生成的模板

11、勾选All表示生成所有,勾选禁止提示,防止弹出很多个提示信息,点击OK

12、生成模板

entity.java代码:


##引入宏定义
$!define
$!init
##使用宏定义设置回调(保存位置与文件后缀)
#save("/entity", ".java")
##使用宏定义设置包后缀
#setPackageSuffix("entity")
##使用全局变量实现默认包导入
$!autoImport
import java.io.Serializable;
import lombok.Data;
##使用宏定义实现类注释信息
#tableComment("实体类")
@Data
public class $!{tableInfo.name} implements Serializable {
    private static final long serialVersionUID = $!tool.serial();
#foreach($column in $tableInfo.fullColumn)
    #if(${column.comment})#end
 
    private $!{tool.getClsNameByFullName($column.type)} $!{column.name};
#end
}

controller接口: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 lombok.extern.slf4j.Slf4j;
import com.github.pagehelper.PageInfo;
import $!{tableInfo.savePackageName}.response.PageResult;
import $!{tableInfo.savePackageName}.response.Result;
import $!{tableInfo.savePackageName}.response.StatusCode;
import $!{tableInfo.savePackageName}.entity.$!{tableInfo.name};
import $!{tableInfo.savePackageName}.service.$!{tableInfo.name}Service;
import org.springframework.web.bind.annotation.*;
import org.springframework.util.CollectionUtils;
import javax.annotation.Resource;
import java.util.List;
import java.util.Objects;
 

@RestController
@Slf4j
@RequestMapping("/$!tool.firstLowerCase($tableInfo.name)")
public class $!{tableName} {
    
    @Resource
    private $!{tableInfo.name}Service $!tool.firstLowerCase($tableInfo.name)ServiceImpl;
 
    
    @GetMapping(value = "/get/{$!pk.name}")
    public Result selectOne(@PathVariable("$!pk.name") $!pk.shortType $!pk.name) {
        $tableInfo.name result = $!{tool.firstLowerCase($tableInfo.name)}ServiceImpl.selectById(id);
        if(Objects.nonNull(result)){
            return new Result<>(true,StatusCode.OK,"查询成功",result);
        }
        return new Result<>(true,StatusCode.ERROR,"查询失败");
    }
    
    
    @PostMapping(value = "/insert")
    public Result insert(@RequestBody $tableInfo.name $!tool.firstLowerCase($tableInfo.name)) {
        int result = $!{tool.firstLowerCase($tableInfo.name)}ServiceImpl.insert($!tool.firstLowerCase($tableInfo.name));
        if (result > 0) {
          return new Result<>(true,StatusCode.OK,"新增成功",result);
        }
        return new Result<>(true,StatusCode.ERROR,"新增失败"); 
    }
 
    
    @PutMapping(value = "/update")
    public Result update(@RequestBody $tableInfo.name $!tool.firstLowerCase($tableInfo.name)) {
        $tableInfo.name result = $!{tool.firstLowerCase($tableInfo.name)}ServiceImpl.update($!tool.firstLowerCase($tableInfo.name));
        if (Objects.nonNull(result)) {
          return new Result<>(true,StatusCode.OK,"修改成功",result);
        }
        return new Result<>(true,StatusCode.ERROR,"修改失败");
    }
 
    
    @DeleteMapping(value = "/delete/{$!pk.name}")
    public Result delete(@PathVariable("$!pk.name") $!pk.shortType $!pk.name) {
        int result = $!{tool.firstLowerCase($tableInfo.name)}ServiceImpl.deleteById($!pk.name);
        if (result > 0) {
          return new Result<>(true,StatusCode.OK,"删除成功",result);
        }
        return new Result<>(true,StatusCode.ERROR,"删除失败");
    }
 
    
    @GetMapping(value = "/selectAll")
    public Result<List<$tableInfo.name>> selectAll() {
        List<$tableInfo.name> $!tool.firstLowerCase($tableInfo.name)s = $!{tool.firstLowerCase($tableInfo.name)}ServiceImpl.selectAll();
        if (CollectionUtils.isEmpty($!tool.firstLowerCase($tableInfo.name)s)) {
            return new Result<>(true,StatusCode.ERROR,"查询全部数据失败");       
        }
        return new Result<>(true,StatusCode.OK,"查询全部数据成功",$!tool.firstLowerCase($tableInfo.name)s);
        
    }
 
    
    @GetMapping(value = "/selectPage/{current}/{size}")
    public Result selectPage(@PathVariable("current") Integer current,@PathVariable("size") Integer size) {
        PageInfo<$tableInfo.name> page = $!{tool.firstLowerCase($tableInfo.name)}ServiceImpl.selectPage(current, size);
        if (Objects.nonNull(page)) {
            return new Result<>(true,StatusCode.OK,"分页条件查询成功",new PageResult<>(page.getTotal(),page.getList()));
        }
        return new Result<>(true,StatusCode.ERROR,"分页查询数据失败");
    }
    
}

service接口: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;
 

public interface $!{tableName} {
 
    
    $!{tableInfo.name} selectById($!pk.shortType $!pk.name);
 
    
    PageInfo<$!{tableInfo.name}> selectPage(int current, int size);
 
    
    List<$!{tableInfo.name}> selectAll();
    
    
    List<$!{tableInfo.name}> selectList($!{tableInfo.name} $!tool.firstLowerCase($!{tableInfo.name}));
 
    
    int insert($!{tableInfo.name} $!tool.firstLowerCase($!{tableInfo.name}));
    
    
    int batchInsert(List<$!{tableInfo.name}> $!tool.firstLowerCase($!{tableInfo.name})s);
    
    
    $!{tableInfo.name} update($!{tableInfo.name} $!tool.firstLowerCase($!{tableInfo.name}));
 
    
    int deleteById($!pk.shortType $!pk.name);
    
    
    int count();
}

serviceImpl 实现类:serviceImpl .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.transaction.annotation.Transactional;
import org.springframework.stereotype.Service;
import com.github.pagehelper.PageHelper;
import com.github.pagehelper.PageInfo;
 
import javax.annotation.Resource;
import java.util.List;
 
 

@Service("$!tool.firstLowerCase($!{tableInfo.name})ServiceImpl")
public class $!{tableName} implements $!{tableInfo.name}Service {
    @Resource
    private $!{tableInfo.name}Dao $!tool.firstLowerCase($!{tableInfo.name})Dao;
 
    
    @Override
    public $!{tableInfo.name} selectById($!pk.shortType $!pk.name) {
        return this.$!{tool.firstLowerCase($!{tableInfo.name})}Dao.selectById($!pk.name);
    }
 
    
    @Override
    public PageInfo<$!{tableInfo.name}> selectPage(int current, int size) {
        PageHelper.startPage(current,size);
        List<$!{tableInfo.name}> dataList = $!{tool.firstLowerCase($!{tableInfo.name})}Dao.selectAll();
        return new PageInfo<>(dataList);
    }
 
    
     @Override
     public List<$!{tableInfo.name}> selectAll() {
        return this.$!{tool.firstLowerCase($!{tableInfo.name})}Dao.selectAll();
     }
     
    
    @Override
    public List<$!{tableInfo.name}> selectList($!{tableInfo.name} $!{tool.firstLowerCase($!{tableInfo.name})}) {
        return this.$!{tool.firstLowerCase($!{tableInfo.name})}Dao.selectList($!{tool.firstLowerCase($!{tableInfo.name})});
    }
    
    
    @Override
    @Transactional
    public int insert($!{tableInfo.name} $!tool.firstLowerCase($!{tableInfo.name})) {
        return this.$!{tool.firstLowerCase($!{tableInfo.name})}Dao.insert($!tool.firstLowerCase($!{tableInfo.name}));
    }
 
    
    @Override
    @Transactional
    public int batchInsert(List<$!{tableInfo.name}> $!tool.firstLowerCase($!{tableInfo.name})s) {
        return this.$!{tool.firstLowerCase($!{tableInfo.name})}Dao.batchInsert($!tool.firstLowerCase($!{tableInfo.name})s);
    }
 
    
    @Override
    @Transactional
    public $!{tableInfo.name} update($!{tableInfo.name} $!tool.firstLowerCase($!{tableInfo.name})) {
        this.$!{tool.firstLowerCase($!{tableInfo.name})}Dao.update($!tool.firstLowerCase($!{tableInfo.name}));
        return this.selectById($!{tool.firstLowerCase($!{tableInfo.name})}.get$!tool.firstUpperCase($pk.name)());
    }
 
    
    @Override
    @Transactional
    public int deleteById($!pk.shortType $!pk.name) {
        return this.$!{tool.firstLowerCase($!{tableInfo.name})}Dao.deleteById($!pk.name);
    }
    
    
     @Override
     public int count(){
        return this.$!{tool.firstLowerCase($!{tableInfo.name})}Dao.count();
     }
}

dao层: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.Mapper;
import org.apache.ibatis.annotations.Param;
import java.util.List;
 

 @Mapper
public interface $!{tableName} {
 
    
    $!{tableInfo.name} selectById($!pk.shortType $!pk.name);
    
    
    List<$!{tableInfo.name}> selectAll();
    
    
    List<$!{tableInfo.name}> selectList($!{tableInfo.name} $!tool.firstLowerCase($!{tableInfo.name}));
 
    
    int insert($!{tableInfo.name} $!tool.firstLowerCase($!{tableInfo.name}));
    
    
    int batchInsert(List<$!{tableInfo.name}> $!tool.firstLowerCase($!{tableInfo.name})s);
    
    
    int update($!{tableInfo.name} $!tool.firstLowerCase($!{tableInfo.name}));
 
    
    int deleteById($!pk.shortType $!pk.name);
 
    
    int count();
}

mapper.xml代码如下:


##引入mybatis支持
$!mybatisSupport
 
##设置保存名称与保存位置
$!callback.setFileName($tool.append($!{tableInfo.name}, "Dao.xml"))
$!callback.setSavePath($tool.append($modulePath, "/class="lazy" data-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="selectById" resultMap="$!{tableInfo.name}Map">
        select
          <include refid="Base_Column_List" />
        from $!tableInfo.obj.name
        where $!pk.obj.name = #{$!pk.name}
    </select>
 
    <!-- 查询全部 -->
    <select id="selectAll" resultMap="$!{tableInfo.name}Map">
        select
        <include refid="Base_Column_List" />
        from $!tableInfo.obj.name
    </select>
 
    <!--通过实体作为筛选条件查询-->
    <select id="selectList" 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="$!tool.firstLowerCase($!{tableInfo.name})s" item="item" index="index" separator=",">
        (
            #foreach($column in $tableInfo.fullColumn)
            #{item.$!{column.name}}#if($velocityHasNext), #end
#end
         )
         </foreach>
    </insert>
 
    <!-- 通过主键修改数据 -->
    <update id="update">
        update $!{tableInfo.obj.parent.name}.$!{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>
    
    <!-- 总数 resultType="int">
        select count(*) from $!{tableInfo.obj.name}
    </select>
</mapper>

测试成功!

代码就全部生成出来了!

到此这篇关于Java必备开发神器之EasyCode的文章就介绍到这了,更多相关开发神器EasyCode内容请搜索编程网以前的文章或继续浏览下面的相关文章希望大家以后多多支持编程网!

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

IDEA必备开发神器之EasyCode

下载Word文档到电脑,方便收藏和打印~

下载Word文档

猜你喜欢

PHPStorm 入门必备:快速掌握 PHP 开发神器

PHPStorm 是一款功能强大的 IDE,专为 PHP 开发人员设计。本文将指导您入门 PHPStorm,快速掌握它的基本功能和高级特性,让您轻松高效地进行 PHP 开发。
PHPStorm 入门必备:快速掌握 PHP 开发神器
2024-03-03

Serverless Framework 大揭秘:Node.js 开发人员必备的神器

Serverless Framework 是一款强大的工具,可以让 Node.js 开发人员轻松构建、部署和管理无服务器应用程序。它消除了基础设施维护的麻烦,让开发人员专注于编写代码。本文将深入探讨 Serverless Framework 的特性、优势,并提供使用它的逐步指南。
Serverless Framework 大揭秘:Node.js 开发人员必备的神器
2024-03-02

揭秘Golang开发中的必备利器

Golang开发利器大揭秘:你不容错过的工具Go语言(Golang)作为一门快速、高效的编程语言,越来越受到开发者们的青睐。然而,要想在Golang开发中发挥出最大的效能,除了熟练掌握语言本身的特性外,选择和掌握好适合的工具也是至关重要的
揭秘Golang开发中的必备利器
2024-02-27

降噪耳机性价比之王 静享音乐必备神器

现在的生活越来越离不开无线耳机了,随着主动降噪技术被逐步攻克,近年来诞生了不少内置降噪性能的耳机产品。大家肯定也和我一样十分好奇,在这么多降噪耳机中究竟哪款才是性价比之王?其实就这个问题我也纠结了好久,只能“听个响”的蓝牙耳机已经不能满足我的需求了,早就想换一
降噪耳机性价比之王 静享音乐必备神器
2014-05-31

做民营企业SAP项目必备神器之SAP QM FMs(FunctionModules)(QualityManagement)

http://www.tcodesearch.com/sap-fms/list?module=qm FmDescriptionQAPP_CUST_IP_F4F4 - Help for the Inspection Point FieldsB
2023-06-05

必备工具:Golang开发者的利器盘点

Golang是一种简洁、高效、并发安全的编程语言,受到了越来越多开发者的喜爱和追捧。作为Golang开发者,我们需要熟练掌握一些工具,以便更好地开发和调试我们的应用程序。本文将为大家盘点一些对于Golang开发者来说必知的工具。gofmtg
必备工具:Golang开发者的利器盘点
2024-01-20

编程热搜

  • Python 学习之路 - Python
    一、安装Python34Windows在Python官网(https://www.python.org/downloads/)下载安装包并安装。Python的默认安装路径是:C:\Python34配置环境变量:【右键计算机】--》【属性】-
    Python 学习之路 - Python
  • chatgpt的中文全称是什么
    chatgpt的中文全称是生成型预训练变换模型。ChatGPT是什么ChatGPT是美国人工智能研究实验室OpenAI开发的一种全新聊天机器人模型,它能够通过学习和理解人类的语言来进行对话,还能根据聊天的上下文进行互动,并协助人类完成一系列
    chatgpt的中文全称是什么
  • C/C++中extern函数使用详解
  • C/C++可变参数的使用
    可变参数的使用方法远远不止以下几种,不过在C,C++中使用可变参数时要小心,在使用printf()等函数时传入的参数个数一定不能比前面的格式化字符串中的’%’符号个数少,否则会产生访问越界,运气不好的话还会导致程序崩溃
    C/C++可变参数的使用
  • css样式文件该放在哪里
  • php中数组下标必须是连续的吗
  • Python 3 教程
    Python 3 教程 Python 的 3.0 版本,常被称为 Python 3000,或简称 Py3k。相对于 Python 的早期版本,这是一个较大的升级。为了不带入过多的累赘,Python 3.0 在设计的时候没有考虑向下兼容。 Python
    Python 3 教程
  • Python pip包管理
    一、前言    在Python中, 安装第三方模块是通过 setuptools 这个工具完成的。 Python有两个封装了 setuptools的包管理工具: easy_install  和  pip , 目前官方推荐使用 pip。    
    Python pip包管理
  • ubuntu如何重新编译内核
  • 改善Java代码之慎用java动态编译

目录