idea配置SpringBoot+MybatisPlus的Controller模板,一键生成Controller

这篇具有很好参考价值的文章主要介绍了idea配置SpringBoot+MybatisPlus的Controller模板,一键生成Controller。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

本质是idea使用velocity生成代码

1、介绍一下

我用的MybatisX-Generator生成了entity和service等,但是他没有controller,还得自己创建好麻烦,于是写了模板。
我的格式(以t_user_info表为例):

  • com.xx.entity.UserInfoEntity
  • com.xx.service.UserInfoService

我想在com.xx.controller中输入UserInfoController,让他给我创建基本的接口,且自动引入service和entity
接口返回类型为R,代码放下面。

2、配置模板

打开idea中文件 - 设置 - 编辑器 - 文件和代码模板
idea配置SpringBoot+MybatisPlus的Controller模板,一键生成Controller,spring boot,intellij-idea,java
在编辑区输入代码

package ${PACKAGE_NAME};
#set($ch = "")
#set($first = true)
#set($EntityName = $NAME.replaceAll("Controller", ""))
#foreach($ch in $EntityName.toCharArray())
    #set($ch = $ch + "")
    #if($ch == $ch.toUpperCase())
        #if($first)
            #set($entityName = $ch.toLowerCase())
            #set($entity_name = $ch.toLowerCase())
            #set($first = false)
        #else
            #set($entityName = $entityName + $ch)
            #set($entity_name = $entity_name + "_" + $ch.toLowerCase())
        #end
    #else
        #set($entity_name = $entity_name + $ch)
        #set($entityName = $entityName + $ch)
    #end
#end
#set($PARENT_PACKAGE = "")
#set($lastDotIndex = $PACKAGE_NAME.lastIndexOf("."))
#if($lastDotIndex > 0)
    #set($PARENT_PACKAGE = $PACKAGE_NAME.substring(0, $lastDotIndex))
#else
    #set($PARENT_PACKAGE = $PACKAGE_NAME)
#end


import com.alibaba.fastjson.JSON;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import lombok.extern.slf4j.Slf4j;
import ${PARENT_PACKAGE}.service.${EntityName}Service;
import ${PARENT_PACKAGE}.entity.${EntityName}Entity;
import ${PARENT_PACKAGE}.util.R;
import org.springframework.web.bind.annotation.*;

import javax.annotation.Resource;
import java.util.Date;


/**
 * @author ${USER}
 * @description 针对表【t_${entity_name}】的数据库操作Controller实现
 * @createDate ${TIME}
 */
@Slf4j
@RestController
@RequestMapping("/${entity_name}")
public class ${EntityName}Controller {

    @Resource
    private ${EntityName}Service ${entityName}Service;

    /**
     * 新增或更新
     */
    @PostMapping("/save")
    public R save(@RequestBody ${EntityName}Entity ${entityName}){
        log.info("${entityName}: {}", JSON.toJSONString(${entityName}));
        if (${entityName}.getId() == null) {
            boolean flag = ${entityName}Service.save(${entityName});
            return flag ? R.ok() : R.error("新增失败");
        } else {
            ${entityName}.setUpdateTime(new Date());
            boolean flag = ${entityName}Service.updateById(${entityName});
            return flag ? R.ok() : R.error("更新失败");
        }
    }

    /**
     * 删除
     */
    @DeleteMapping("/{id}")
    public R delete(@PathVariable Long id){
        if (id == null) {
            return R.error("删除失败");
        }
        boolean flag = ${entityName}Service.removeById(id);
        return flag ? R.ok() : R.error("删除失败");
    }

    /**
     * 查询
     */
    @GetMapping("/{id}")
    public R get(@PathVariable Long id){
        if (id == null) {
            return R.error("查询失败");
        }
        ${EntityName}Entity ${entityName} = ${entityName}Service.getById(id);
        return R.ok().data(${entityName});
    }

    /**
     * 分页查询
     */
    @PostMapping("/list")
    public R list(@RequestParam(name = "current", defaultValue = "1") int current,
                  @RequestParam(name = "size", defaultValue = "10") int size) {
        log.info("current: {}, size: {}", current, size);
        Page<${EntityName}Entity> page = new Page<>(current, size);
        ${entityName}Service.page(page);
        return R.ok().data(page);
    }

}

其中,我的R放在com.xx.util下,代码如下文章来源地址https://www.toymoban.com/news/detail-850204.html

package com.xx.util;

import lombok.Data;
import lombok.experimental.Accessors;

import java.util.HashMap;
import java.util.Map;

@Data
@Accessors(chain = true)
public class R {

    private Integer code;

    private String message;

    private Object data;

    public R code(Integer code) {
        this.code = code;
        return this;
    }

    public R message(String message) {
        this.message = message;
        return this;
    }

    public R data(Map<String, Object> data) {
        this.data = data;
        return this;
    }

    public R data(Object data) {
        this.data = data;
        return this;
    }

    public R data(String key, Object value) {
        ((Map<String, Object>) this.data).put(key, value);
        return this;
    }

    private R() {
        this.data = new HashMap<>();
    }

    public static R error() {
        return new R().code(500).message("ERROR");
    }

    public static R error(int code) {
        return new R().code(code).message("ERROR");
    }

    public static R error(String message) {
        return new R().message(message);
    }

    public static R ok() {
        return new R().code(200).message("SUCCESS");
    }
}

3、使用

  • 在controller包下右键,新建 - Java类
  • 选择Controller,输入Controller名字
    idea配置SpringBoot+MybatisPlus的Controller模板,一键生成Controller,spring boot,intellij-idea,java

到了这里,关于idea配置SpringBoot+MybatisPlus的Controller模板,一键生成Controller的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • IDEA集成EasyCode插件,快速生成自定义mybatisplus代码

    在idea插件中,搜索EasyCode插件,下载并进行安装。  easyCode插件可以修改作者名称,即生成代码后,注释中自动添加相应作者的姓名。  Type Mapper指的是生成mapper.xml文件中数据库中的字段和java中代码的字段以及生成mybatis数据之间的类型转换。最常见的形式如下,也就是java中的

    2024年02月06日
    浏览(42)
  • MybatisPlus 超好用的idea代码生成插件,及使用详解

    文章目录 前言 一、MybatisPlus简介 二、MybatisPlus 代码生成插件 1.插件安装与配置 2.生成代码结构、内容展示 3.表新增字段,重新生成实体类覆盖  总结 新需求来了,又添加了好几张表,总不能手写或者复制之前的代码,再一通修改吧?! 一张表需要添加好几个新字段,往实体

    2024年01月24日
    浏览(41)
  • vscode一键生成vue模板方法

    方法一: 方法二:Ctrl + shift + P 快捷键打开配置窗口,输入“user”,找到“Configure User Snippets” (配置用户代码片段) 输入文件名后,回车,会生成一个“*.json.code” 文件,在文件中添加自己需要的代码模板 模板示例: “prefix” - - - 生成模板的名称,自定义,可以写个好记的

    2024年02月14日
    浏览(47)
  • Goland一键生成单元测试文件及代码模板

    最近接触了Go的单元测试,对单元测试有一些简单的了解,下面把自己实战中遇到的问题及解决方法记录下来。 最初的单元测试文件都是我手动自己建立的,然后里面单元测试代码也是自己手动写的,但是后来发现根本没必要,Goland自带的有此功能,不过貌似需要升级到最新

    2024年02月15日
    浏览(42)
  • SpringBoot项目部署(Docker)——通过Dockerfile将打包好的jar包创建成镜像 & 在IDEA中配置docker,一键启动容器 & 用swagger进行测试

    1.Dockerfile命令初识,CMD…; 2.idea配置docker,图形化界面; 3.编写Dockerfile把jar包制作成镜像,并用idea一键生成和启动容器; 4.在Linux中测试,在宿主机用swagger进行测试; SpringBoot项目部署(jar包)——项目用maven打包成jar包 windows + Linux平台运行 Linux安装java 遇到的问题 Docker是一

    2024年02月05日
    浏览(52)
  • SpringBoot MybatisPlus配置介绍

    SpringBoot MybatisPlus配置介绍,篇幅较长 坚持看下来 你肯定会有所收获!!! 以下配置项可以根据你的实际需求进行调整和配置。id-type请注意,其中一些配置项可能需要自定义的类或接口来实现相应的功能,如自定义的逻辑删除SQL注入器和元对象处理器 1. id-type:ID生成策略

    2024年02月07日
    浏览(43)
  • 【STM32开发小技巧】CUBEMX改变工程模板(FreeMarker一键生成定制文件)

    ps:可直接跳到效果展示 众所周知CUBEMX可以生成代码,图形界面可以方便用户进行STM32的配置,有天我就在想能否用户改变生成后的代码,于是就有了下面的文章。 直接进入Project Manager页面。 我们看一下官方的说明 生成了一些外设信息,这些都是通过FreeMarker模板引擎代码生成

    2023年04月08日
    浏览(79)
  • JavaSE学习之路:Idea小技巧一键生成标准JavaBean(一键生成构造方法和Setter和Getter方法)

    1.生成有参和无参构造函数 2.生成Getter和Setter方法 3.生成toString方法 1.安装插件 2.右键-使用插件

    2024年02月12日
    浏览(34)
  • idea一键自动生成对象所有get、set方法。idea插件:GenerateAllSetter

    idea中有一款插件能够一键自动生成对象所有的get、set方法,有助于我们开发者提升开发效率的插件,非常简单实用。 插件名: GenerateAllSetter 。 该插件作用是可以快速针对已有的model实体对象的属性生产get、set代码,免去开发者在开发过程中get、set属性值时还需要去实体对象

    2024年02月11日
    浏览(51)
  • 牛逼!一键生成整个项目类关系图,这款 IDEA 插件堪称神器!

    最近看源码就想找个uml的类图工具,网上看了一些,发现都是一些单个类的继承关系图,如果不知道的朋友,可以用uml插件工具搜索uml即可(uml support),然后每次点击右键后在菜单下面找Diagrams。 但是我们今天介绍的不是这个,而是另外一个不错的插件,叫code iris。这个是

    2024年04月09日
    浏览(46)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包