博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
利用EasyCode插件提高开发效率
阅读量:2198 次
发布时间:2019-05-03

本文共 8100 字,大约阅读时间需要 27 分钟。

简介

在idea中使用Easy Code插件配合mybatis-plus 快速生成基于SpringBoot 的 restful API,提高工作效率。

自动生成的代码都是基于单表操作的。

Easy Code 地址:gitee.com/makejava/Ea…

操作

1.前期准备

新建数据库

新建一张表,建议字段使用下划线的命名方式。

主键建议使用id,也可以不用。模板中会根据主键是否命名为id来添加@TableId(type = IdType.AUTO),如果命名为其他的,需要自己添加该注解

CREATE TABLE `dog` (  `id` bigint NOT NULL AUTO_INCREMENT COMMENT 'id',  `name` varchar(30) NOT NULL COMMENT '名称',  `age` int NOT NULL COMMENT '年龄',  `del_flag` tinyint(1) NOT NULL DEFAULT '0' COMMENT '删除标志,0=未删除,1=删除',  PRIMARY KEY (`id`) USING BTREE) ENGINE=InnoDB COMMENT='狗';

新建SpringBoot项目

核心依赖如下:

com.baomidou
mybatis-plus-boot-starter
3.3.2
org.projectlombok
lombok

2.下载插件

image-20200910111934685

如果插件市场找不到,去插件仓库:plugins.jetbrains.com/,下载后从硬盘上安装。具体教程百度,网上很多。

3.配置模板

image-20200910112125581

修改模板的时候,不建议直接修改默认的模板,建议直接复制一份再修改。

image-20200910112436240

模板名称建议带上后缀,会有高亮提示,具体模板见文末。

在这里插入图片描述

4.连接数据库

在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

5.代码生成

连接成功后找到要生成代码的表,可以先看下配置,有没有字段类型映射错误的,如果有可以手动配置一下。

在这里插入图片描述

这里是单表的配置,也可以配置全局的。

在这里插入图片描述
在这里插入图片描述

没问题后就可以点击生成按钮了

![image-20200911094114817](https://img-blog.csdnimg.cn/2020091720404871.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L2ExOTk4MzIx,size_16,color_FFFFFF,t_70#pic_center在这里插入图片描述

生成后在idea目录下会生成该表的配置信息,后续如果生成的代码有问题,可以把生成的这个配置文件删除然后重新生成代码。

在这里插入图片描述

注意:生成的Mapper.xml要修改一下,删除一个“,”

在这里插入图片描述

image-20200911094828656

生成后可以测试一下接口,看一下效果,可以根据自己的业务需求自行调整。

其他进阶玩法可以参考官方文档。

附:模板

entity.java

##导入宏定义$!define##保存文件(宏定义)#save("/entity", ".java")##包路径(宏定义)#setPackageSuffix("entity")##自动导入包(全局变量)$!autoImportimport com.baomidou.mybatisplus.annotation.IdType;import com.baomidou.mybatisplus.annotation.TableId;import io.swagger.annotations.ApiModel;import io.swagger.annotations.ApiModelProperty;import lombok.AllArgsConstructor;import lombok.Builder;import lombok.Data;import lombok.NoArgsConstructor;import java.io.Serializable;import java.util.Date;##表注释(宏定义)#tableComment("表实体类")@Data@Builder@AllArgsConstructor@NoArgsConstructor@ApiModel("$!{tableInfo.comment}")public class $!{tableInfo.name} implements Serializable {private static final long serialVersionUID = $!tool.serial();#foreach($column in $tableInfo.fullColumn)    #if(${column.comment})/**    * ${column.comment}    */#end    #if(${column.comment})@ApiModelProperty(value = "${column.comment}")#end    #if($column.name.equals('id'))@TableId(type = IdType.AUTO)#end    private $!{tool.getClsNameByFullName($column.type)} $!{column.name};    #end}

mapper.java

##导入宏定义$!define##设置表后缀(宏定义)#setTableSuffix("Mapper")##保存文件(宏定义)#save("/mapper", "Mapper.java")##包路径(宏定义)#setPackageSuffix("mapper")import com.baomidou.mybatisplus.core.mapper.BaseMapper;import $!{tableInfo.savePackageName}.entity.$!tableInfo.name;##表注释(宏定义)#tableComment("表数据库访问层")public interface $!{tableName} extends BaseMapper<$!tableInfo.name> {}

service.java

##导入宏定义$!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> {}

serviceImpl.java

##导入宏定义$!define##设置表后缀(宏定义)#setTableSuffix("ServiceImpl")##保存文件(宏定义)#save("/service/impl", "ServiceImpl.java")##包路径(宏定义)#setPackageSuffix("service.impl")import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;import $!{tableInfo.savePackageName}.entity.$!{tableInfo.name};import $!{tableInfo.savePackageName}.mapper.$!{tableInfo.name}Mapper;import $!{tableInfo.savePackageName}.service.$!{tableInfo.name}Service;import lombok.extern.slf4j.Slf4j;import org.springframework.stereotype.Service;##表注释(宏定义)#tableComment("表服务实现类")@Slf4j@Servicepublic class $!{tableName} extends ServiceImpl<$!{tableInfo.name}Mapper, $!{tableInfo.name}> implements $!{tableInfo.name}Service {}

controller.java

##导入宏定义$!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 $!{tableInfo.savePackageName}.entity.$!tableInfo.name;import $!{tableInfo.savePackageName}.service.$!{tableInfo.name}Service;import io.swagger.annotations.ApiOperation;import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;import com.baomidou.mybatisplus.core.metadata.IPage;import com.baomidou.mybatisplus.extension.plugins.pagination.Page;import com.baomidou.mybatisplus.extension.api.R;import org.springframework.beans.factory.annotation.Autowired;import org.springframework.web.bind.annotation.*;import java.io.Serializable;import java.util.List;##表注释(宏定义)#tableComment("表控制层[不建议修改,如果有新增的方法,写在子类中]")public class $!{tableName} {      /**     * 服务对象     */    @Autowired    $!{tableInfo.name}Service $!{serviceName};        /**     * 分页查询所有数据     *     * @param page 分页对象     * @param $!entityName 查询实体     * @return 所有数据     */    @ApiOperation("分页查询所有数据")    @GetMapping    public R
<$!tableInfo.name>> selectAll(Page<$!tableInfo.name> page, $!tableInfo.name $!entityName) { return R.ok ($!{serviceName}.page(page, new QueryWrapper<>($!entityName))); } /** * 通过主键查询单条数据 * * @param id 主键 * @return 单条数据 */ @ApiOperation("通过主键查询单条数据") @GetMapping("{id}") public R<$!tableInfo.name> selectOne(@PathVariable Serializable id) { return R.ok($!{serviceName}.getById(id)); } /** * 新增数据 * * @param $!entityName 实体对象 * @return 新增结果 */ @ApiOperation("新增数据") @PostMapping public R
insert(@RequestBody $!tableInfo.name $!entityName) { boolean rs = $!{serviceName}.save($!entityName); return R.ok(rs?$!{entityName}.getId():0); } /** * 修改数据 * * @param $!entityName 实体对象 * @return 修改结果 */ @ApiOperation("修改数据") @PutMapping public R
update(@RequestBody $!tableInfo.name $!entityName) { return R.ok($!{serviceName}.updateById($!entityName)); } /** * 单条/批量删除数据 * * @param idList 主键集合 * @return 删除结果 */ @ApiOperation("单条/批量删除数据") @DeleteMapping public R
delete(@RequestParam("idList") List
idList) { return R.ok($!{serviceName}.removeByIds(idList)); }}

extendController.java

##导入宏定义$!define##设置表后缀(宏定义)#setTableSuffix("ExtendController")##保存文件(宏定义)#save("/controller", "ExtendController.java")##包路径(宏定义)#setPackageSuffix("controller")##定义服务名#set($serviceName = $!tool.append($!tool.firstLowerCase($!tableInfo.name), "Service"))##定义实体对象名#set($entityName = $!tool.firstLowerCase($!tableInfo.name))import $!{tableInfo.savePackageName}.pojo.$!tableInfo.name;import $!{tableInfo.savePackageName}.service.$!{tableInfo.name}Service;import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;import com.baomidou.mybatisplus.core.metadata.IPage;import com.baomidou.mybatisplus.extension.plugins.pagination.Page;import com.baomidou.mybatisplus.extension.api.R;import org.springframework.beans.factory.annotation.Autowired;import org.springframework.web.bind.annotation.*;import lombok.extern.slf4j.Slf4j;import io.swagger.annotations.Api;import java.io.Serializable;import java.util.List;##表注释(宏定义)#tableComment("表控制层扩展类,一般初次生成,后续不再覆盖。这个类提供编写自己定义的方法。")@Api(tags = "$!{tableInfo.comment}接口")@Slf4j@RestController@RequestMapping("$!tool.firstLowerCase($!tableInfo.name)")public class $!{tableName} extends $!{tableInfo.name}Controller {}复制代码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
#foreach($column in $tableInfo.fullColumn) $!column.obj.name,#end
#foreach($column in $tableInfo.fullColumn)
#end

针对以上的技术点呢,笔者也整理了一套视频学习资料和面试题,

需要的朋友可以帮忙转发一下

然后点击,即可免费领取!

以下是部分学习资料截图

在这里插入图片描述

在这里插入图片描述

转载地址:http://vkqub.baihongyu.com/

你可能感兴趣的文章
【LEETCODE】312-Burst Balloons
查看>>
【LEETCODE】232-Implement Queue using Stacks
查看>>
【LEETCODE】225-Implement Stack using Queues
查看>>
【LEETCODE】155-Min Stack
查看>>
【LEETCODE】20-Valid Parentheses
查看>>
【LEETCODE】290-Word Pattern
查看>>
【LEETCODE】36-Valid Sudoku
查看>>
【LEETCODE】205-Isomorphic Strings
查看>>
【LEETCODE】204-Count Primes
查看>>
【LEETCODE】228-Summary Ranges
查看>>
【LEETCODE】27-Remove Element
查看>>
【LEETCODE】66-Plus One
查看>>
【LEETCODE】26-Remove Duplicates from Sorted Array
查看>>
【LEETCODE】118-Pascal's Triangle
查看>>
【LEETCODE】119-Pascal's Triangle II
查看>>
【LEETCODE】88-Merge Sorted Array
查看>>
【LEETCODE】19-Remove Nth Node From End of List
查看>>
【LEETCODE】125-Valid Palindrome
查看>>
【LEETCODE】28-Implement strStr()
查看>>
【LEETCODE】6-ZigZag Conversion
查看>>