EasyCode使用指南—MybatisPlus模板

目录

  • 1、下载EasyCode插件
  • 2、配置EasyCode
    • 2.1、配置作者名称
    • 2.2、配置代码内容生成模板(模板内容见文末)
    • 2.3、连接数据库
    • 2.4、使用代码内容生成模板
  • 模板内容:
    • controller.java.vm
    • dto.java.vm
    • mapper.java.vm
    • mapper.xml.vm
    • pojo.java.vm
    • service.java.vm
    • serviceImpl.java.vm

1、下载EasyCode插件

在这里插入图片描述

2、配置EasyCode

2.1、配置作者名称

在这里插入图片描述

2.2、配置代码内容生成模板(模板内容见文末)

在这里插入图片描述

2.3、连接数据库

在这里插入图片描述

2.4、使用代码内容生成模板

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

模板内容:

controller.java.vm

##导入宏定义
$!{define.vm}

##设置表后缀(宏定义)
#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}.domain.dto.$!{tableInfo.name}Dto;
import $!{tableInfo.savePackageName}.service.$!{tableInfo.name}Service;
import org.springframework.web.bind.annotation.*;

import com.ruoyi.common.core.controller.BaseController;
import com.ruoyi.common.core.domain.AjaxResult;
import com.ruoyi.common.core.page.TableDataInfo;

import java.util.List;
import lombok.RequiredArgsConstructor;

##表注释(宏定义)
#tableComment("表控制层")
@RestController
@RequestMapping("$!tool.firstLowerCase($!tableInfo.name)")
@RequiredArgsConstructor
public class $!{tableName} extends BaseController{
    /**
     * 服务对象
     */
    private final $!{tableInfo.name}Service $!{serviceName};

    /** 
     * 
     * @param $!{entityName}dto 请求参数封装
     * @author $!author 
     * @description //TODO  分页查询所有数据
     * @date $!time.currTime()
     * @return 实例对象
     */
    @PostMapping("/get$!{tableInfo.name}s")
    public TableDataInfo find$!{tableInfo.name}SelectList(@RequestBody $!{tableInfo.name}Dto $!{entityName}dto ) {
        startPage();
        return getDataTable(this.$!{serviceName}.find$!{tableInfo.name}SelectList($!{entityName}dto)); 
    }

   
    /** 
     * 
     * @param $!{entityName}dto 请求参数封装
     * @author $!author  
     * @description //TODO  通过主键查询单条数据
     * @date $!time.currTime()
     * @return 单条数据
     */
    @PostMapping("/get$!{tableInfo.name}ById")
    public AjaxResult select$!{tableInfo.name}ById(@RequestBody $!{tableInfo.name}Dto $!{entityName}dto) {
        return AjaxResult.success($!{serviceName}.select$!{tableInfo.name}ById($!{entityName}dto.getId())); 
    }

    /** 
     * 
     * @param $!{entityName}dto 实体对象
     * @author $!author  
     * @description //TODO  新增数据
     * @date $!time.currTime()
     * @return 新增结果
     */
    @PostMapping("/add$!{tableInfo.name}")
    public AjaxResult add$!{tableInfo.name}(@RequestBody $!{tableInfo.name}Dto $!{entityName}dto) {
        return toAjax(this.$!{serviceName}.insert($!{entityName}dto)); 
    }

    /** 
     * 
     * @param $!{entityName}dto 实体对象
     * @author $!author  
     * @description //TODO  修改数据
     * @date $!time.currTime()
     * @return 修改结果
     */
    @PostMapping("/update$!{tableInfo.name}")
    public AjaxResult update(@RequestBody $!{tableInfo.name}Dto $!{entityName}dto) {
         return toAjax(this.$!{serviceName}.update($!{entityName}dto)); 
    }

    /** 
     * 
     * @param ids 主键集合
     * @author $!author  
     * @description //TODO  删除数据
     * @date $!time.currTime()
     * @return 删除结果
     */
    @PostMapping("/delete$!{tableInfo.name}")
    public AjaxResult delete(@RequestParam("ids") List<Long> ids) {
         return toAjax(this.$!{serviceName}.deleteById(ids)); 
    }
}

dto.java.vm

##引入宏定义
$!{define.vm}

##使用宏定义设置回调(保存位置与文件后缀)
#save("/domain/dto", ".java")

##使用宏定义设置包后缀
#setPackageSuffix("domain.dto")

##使用全局变量实现默认包导入
$!{autoImport.vm}
import com.fasterxml.jackson.annotation.JsonFormat;
import lombok.Data;
import lombok.EqualsAndHashCode;

import java.util.List;

##使用宏定义实现类注释信息
#tableComment("实体类")
@Data
public class $!{tableInfo.name}Dto {

#foreach($column in $tableInfo.fullColumn)
        #if(${column.comment})/**
        * ${column.comment}
        */#end
        
    private $!{tool.getClsNameByFullName($column.type)} $!{column.name}; 
    #end
    
    List<Long> ids;
    /**
    * 页
    */
    private Integer pageNum;
    /**
    * 条
    */
    private Integer pageSize;
    /**
    * 开始时间
    */
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    private LocalDateTime startTime;
    /**
    * 结束时间
    */
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    private LocalDateTime endTime;
    
    public Integer getPageNum() {
        return pageNum == null ? 1 : pageNum;
    }

    public Integer getPageSize() {
        return pageSize == null ? 10 : pageSize;
    }
}

mapper.java.vm

##导入宏定义
$!{define.vm}

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

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

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

import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import $!{tableInfo.savePackageName}.domain.pojo.$!tableInfo.name;
import org.apache.ibatis.annotations.Mapper;

import java.util.List;

##表注释(宏定义)
#tableComment("表数据库访问层")
@Mapper
public interface $!{tableName} extends BaseMapper<$!tableInfo.name> {

     /** 
        * 
        * @param $!tool.firstLowerCase($!{tableInfo.name}) 实例对象
        * @author $!author  
        * @description  分页查询数据
        * @date $!time.currTime()
        * @return 实例对象
     */
    List<$!{tableInfo.name}> select$!{tableInfo.name}List($!{tableInfo.name} $!tool.firstLowerCase($!{tableInfo.name}));
}

mapper.xml.vm

##引入mybatis支持
$!{mybatisSupport.vm}

##设置保存名称与保存位置
$!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}.domain.pojo.$!{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>

<!--查询指定行数据-->
    <select id="select$!{tableInfo.name}List" resultMap="$!{tableInfo.name}Map">
        select
          #allSqlColumn()

        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>
</mapper>

pojo.java.vm

##引入宏定义
$!{define.vm}

##使用宏定义设置回调(保存位置与文件后缀)
#save("/domain/pojo", ".java")

##使用宏定义设置包后缀
#setPackageSuffix("domain.pojo")

##使用全局变量实现默认包导入
$!{autoImport.vm}
import java.io.Serializable;
import lombok.Data;

##使用宏定义实现类注释信息
#tableComment("实体类")
@Data
public class $!{tableInfo.name} {

private static final long serialVersionUID = $!tool.serial();

#foreach($column in $tableInfo.fullColumn)
    #if(${column.comment})/**
     * ${column.comment}
     */#end

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

}

service.java.vm

##导入宏定义
$!{define.vm}

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

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

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

import com.baomidou.mybatisplus.extension.service.IService;
import $!{tableInfo.savePackageName}.domain.dto.$!tableInfo.nameDto;
import $!{tableInfo.savePackageName}.domain.pojo.$!tableInfo.name;
import java.util.List;

##表注释(宏定义)
#tableComment("表服务接口")
public interface $!{tableName} extends IService<$!tableInfo.name> {

    /** 
     * 
     * @param id 主键
     * @author $!author  
     * @description  通过ID查询单条数据
     * @date $!time.currTime()
     * @return 实例对象
     */
    public $!{tableInfo.name} select$!{tableInfo.name}ById (Long id);
        
    /** 
     * 
     * @param $!tool.firstLowerCase($!{tableInfo.name})dto 实例对象
     * @author $!author  
     * @description 分页查询数据
     * @date $!time.currTime()
     * @return 实例对象
     */
    public List<$!{tableInfo.name}> find$!{tableInfo.name}SelectList ($!{tableInfo.name}Dto $!tool.firstLowerCase($!{tableInfo.name})dto);
    
    
   /** 
     * 
     * @param $!tool.firstLowerCase($!{tableInfo.name})dto 实例对象
     * @author $!author  
     * @description  新增数据
     * @date $!time.currTime()
     * @return 实例对象
     */
    public int insert($!{tableInfo.name}Dto $!tool.firstLowerCase($!{tableInfo.name})dto);
    
   /** 
     * 
     * @param $!tool.firstLowerCase($!{tableInfo.name})dto 实例对象
     * @author $!author  
     * @description 修改数据并返回
     * @date $!time.currTime()
     * @return 实例对象
     */
    public int update($!{tableInfo.name}Dto $!tool.firstLowerCase($!{tableInfo.name})dto);
    
    
    /**
     *
     * @param ids 主键
     * @author $!author 
     * @description  通过主键删除数据
     * @date $!time.currTime()
     * @return
     */
    public int deleteById(List<Long> ids);
}

serviceImpl.java.vm

##导入宏定义
$!{define.vm}

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

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

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

import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;

import $!{tableInfo.savePackageName}.mapper.$!{tableInfo.name}Mapper;
import $!{tableInfo.savePackageName}.domain.pojo.$!{tableInfo.name};
import $!{tableInfo.savePackageName}.domain.dto.$!{tableInfo.name}Dto;
import $!{tableInfo.savePackageName}.service.$!{tableInfo.name}Service;
import org.springframework.stereotype.Service;
import $!{tableInfo.savePackageName}.mapper.$!{tableInfo.name}Mapper;

import java.util.List;
import lombok.RequiredArgsConstructor;

import com.ruoyi.common.utils.bean.BeanUtils;

##表注释(宏定义)
#tableComment("表服务实现类")
@Service("$!tool.firstLowerCase($tableInfo.name)Service")
@RequiredArgsConstructor
public class $!{tableName} extends ServiceImpl<$!{tableInfo.name}Dao, $!{tableInfo.name}> implements $!{tableInfo.name}Service {
       
       private final $!{tableInfo.name}Mapper $!tool.firstLowerCase($!{tableInfo.name})Mapper;
        /** 
         * 
         * @param  id 主键
         * @author $!author  
         * @description //TODO  通过ID查询单条数据
         * @date $!time.currTime()
         * @return 实例对象
         */
        @Override
        public $!{tableInfo.name} select$!{tableInfo.name}ById (Long id) {
                LambdaQueryWrapper<$!{tableInfo.name}> $!{tool.firstLowerCase($!{tableInfo.name})}lam =  new LambdaQueryWrapper<$!{tableInfo.name}>();
                $!{tool.firstLowerCase($!{tableInfo.name})}lam.eq($!{tableInfo.name} ::getId ,id);
                return baseMapper.selectOne($!{tool.firstLowerCase($!{tableInfo.name})}lam);
        }
        
        /** 
         * 
         * @param $!tool.firstLowerCase($!{tableInfo.name})dto 实例对象
         * @author $!author  
         * @description //TODO  分页查询数据
         * @date $!time.currTime()
         * @return 实例对象
         */
        @Override
        public List<$!{tableInfo.name}> find$!{tableInfo.name}SelectList ($!{tableInfo.name}Dto $!tool.firstLowerCase($!{tableInfo.name})dto) {
            $!{tableInfo.name} $!tool.firstLowerCase($!{tableInfo.name}) = new $!{tableInfo.name}();
            BeanUtils.copyBeanProp($!tool.firstLowerCase($!{tableInfo.name}),$!tool.firstLowerCase($!{tableInfo.name})dto);
            return this.$!{tool.firstLowerCase($tableInfo.name)}Mapper.select$!{tableInfo.name}List($!{tool.firstLowerCase($tableInfo.name)});     
        }
        
        /** 
         * 
         * @param $!tool.firstLowerCase($!{tableInfo.name})dto 实例对象
         * @author $!author  
         * @description //TODO  新增数据
         * @date $!time.currTime()
         * @return 实例对象
         */
        @Override
        public int insert($!{tableInfo.name}Dto $!tool.firstLowerCase($!{tableInfo.name})dto) {
                $!{tableInfo.name} $!tool.firstLowerCase($!{tableInfo.name}) = new $!{tableInfo.name}();
                BeanUtils.copyBeanProp($!tool.firstLowerCase($!{tableInfo.name}),$!tool.firstLowerCase($!{tableInfo.name})dto);
               return baseMapper.insert($!tool.firstLowerCase($!{tableInfo.name}));
        }
        
        
        /** 
         * 
         * @param $!tool.firstLowerCase($!{tableInfo.name})dto 实例对象
         * @author $!author  
         * @description //TODO  修改数据并返回
         * @date $!time.currTime()
         * @return 实例对象
         */
        @Override
        public int update($!{tableInfo.name}Dto $!tool.firstLowerCase($!{tableInfo.name})dto) {
                $!{tableInfo.name} $!tool.firstLowerCase($!{tableInfo.name}) = new $!{tableInfo.name}();
                BeanUtils.copyBeanProp($!tool.firstLowerCase($!{tableInfo.name}),$!tool.firstLowerCase($!{tableInfo.name})dto);
                return  baseMapper.updateById($!{tool.firstLowerCase($!{tableInfo.name})});
        }
        
        
        /**
         *
         * @param idList 主键
         * @author $!author 
         * @description //TODO    通过主键删除数据
         * @date $!time.currTime()
         * @return
         */
        @Override
        public void deleteById(List<Long> idList) {
            return baseMapper.deleteBatchIds(idList);
        }
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/351196.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

ES的一些名称和概念总结

概念 先看看ElasticSearch的整体架构&#xff1a; 一个 ES Index 在集群模式下&#xff0c;有多个 Node &#xff08;节点&#xff09;组成。每个节点就是 ES 的Instance (实例)。每个节点上会有多个 shard &#xff08;分片&#xff09;&#xff0c; P1 P2 是主分片, R1 R2…

Nginx 主动检查 被动检查

被动检查 proxy_next_upstream http {upstrean httpget {//max_fail5,失败5词&#xff0c;直接下线 down&#xff0c;//fail_timeout10s, 10s之后 重新上线 up//fail_timeout10s, max_fail5,5次失败在10s内&#xff0c;下线&#xff0c;server IP:80 max_fails5 fail_time…

DDOS攻击有哪几种类型

DDOS攻击“分布式拒绝服务”是目前网站服务器所常见的恶意攻击&#xff0c;其原理是通过控制大量肉鸡(虚假流量)访问网站服务器消耗带宽、内存等资源&#xff0c;其目的是使得网站服务器无法正常的访问&#xff0c;其后果是直接导致企业业务受损&#xff0c;数据丢失&#xff0…

墨水屏会议预约门牌,免布线方案会议室新选择!

墨水屏会议预约门牌是一种新型的会议室管理设备&#xff0c;它采用墨水屏技术&#xff0c;可实时显示会议信息、预约状态等&#xff0c;为会议室的管理和使用带来了极大的便利。与传统布线门牌相比&#xff0c;墨水屏会议预约门牌具有许多优点&#xff0c;如长寿命、低功耗、维…

万物简单AIoT 端云一体实战案例学习 之 空气质量检测系统

学物联网,来万物简单IoT物联网!! 下图是本案的3步导学,每个步骤中实现的功能请参考图中的说明。 1、简介 环境污染、空气污染是人类一直所关心并且讨论的永恒话题,人们对优质的环境和健康的身体非常向往。因此,如果有一种可以检测周围环境的空气质量的设备并且环境数据…

Cybellum—信息安全测试工具

产品概述 由于软件和数据在汽车上的使用越来越多&#xff0c;汽车越来越“智能化”&#xff0c;汽车行业面临着重大的信息安全挑战。2021年8月&#xff0c;ISO/SAE 21434正式发布&#xff0c;标准中对汽车的信息安全提出了规范化的要求&#xff0c;汽车信息安全不容忽视。 Cyb…

最新详细eclipse下载、安装、汉化教程

一、下载eclipse安装包 首先进入 eclipse官网 如下&#xff1a; 这里面有很多版本&#xff1b;我们小白一般选择第二个&#xff0c;向下滑动&#xff1b; 点击符合自己系统的版本。 这里我们切换镜像下载&#xff0c;一般选择离你最近的地址下载。 我建议选择大连东软信息学…

燃烧的指针(二)

&#x1f308;个人主页&#xff1a;小田爱学编程 &#x1f525; 系列专栏&#xff1a;c语言从基础到进阶 &#x1f3c6;&#x1f3c6;关注博主&#xff0c;随时获取更多关于c语言的优质内容&#xff01;&#x1f3c6;&#x1f3c6; &#x1f600;欢迎来到小田代码世界~ &#x…

YOLOv8改进 | Conv篇 | 结合Dual思想利用HetConv创新一种全新轻量化结构CSPHet(参数量下降70W)

一、本文介绍 本文给大家带来的改进机制是我结合Dual的思想利用HetConv提出一种全新的结构CSPHet,我们将其用于替换我们的C2f结构,可以将参数降低越75W,GFLOPs降低至6.6GFLOPs,同时本文结构为我独家创新,全网无第二份,非常适合用于发表论文,该结构非常灵活,利用Dual卷…

pip 安装出现报错 SSLError(SSLError(“bad handshake

即使设置了清华源&#xff1a; pip config set global.index-url https://pypi.tuna.tsinghua.edu.cn/simplepip 安装包不能配置清华源&#xff0c;出现报错: Retrying (Retry(total2, connectNone, readNone, redirectNone, statusNone)) after connection broken by ‘SSLE…

【DDD】学习笔记-控制软件复杂度的原则

虽然说认识到软件系统的复杂本性&#xff0c;并不足以让我们应对其复杂&#xff0c;并寻找到简化系统的解决之道&#xff1b;然而&#xff0c;如果我们连导致软件复杂度的本源都茫然不知&#xff0c;又怎么谈得上控制复杂呢&#xff1f;既然我们认为导致软件系统变得复杂的成因…

Chain-of-Thought Prompting Elicits Reasoning in Large Language Models导读

通过生成一系列中间推理步骤&#xff08;即“思维链”&#xff09;显著提高大型语言模型进行复杂推理的能力 这篇论文探讨了如何通过生成一系列中间推理步骤&#xff08;即“思维链”&#xff09;显著提高大型语言模型进行复杂推理的能力。研究人员使用一种简单的方法——思维…

图算法 - 最短路径算法 (dijkstra) 迪克斯特拉算法

解决问题: 图中某个顶点到某一个顶点的最短路径 适用场景: 查找带权图的最短路径 代码设计: 首先定义一张图(邻接矩阵,二维数组方式实现) 生成一张图 迪克斯特拉算法实现 采用贪婪的方式,每次获取最短的一条路径,作为下次遍历的起点 使用visited 记录被访问过的节点避免…

水文模型SWMM与LisFlood耦合(pdf文档、软件见资源)

总技术路线图 INP生成图解 文献&#xff1a;面向服务的Web-SWMM构建研究 regardingINP为ArcGIS Pro项目 1.SWMM模型数据准备与参数设置 1.子汇水区 文件位于&#xff1a;beforeGenerateINP/generateSub.py&#xff08;一级划分&#xff09; 问题&#xff1a; 水文分析阈值划…

C#,数据检索算法之跳跃搜索(Jump Search)的源代码

数据检索算法是指从数据集合&#xff08;数组、表、哈希表等&#xff09;中检索指定的数据项。 数据检索算法是所有算法的基础算法之一。 本文提供跳跃搜索的源代码。 1 文本格式 using System; namespace Legalsoft.Truffer.Algorithm { public static class ArraySe…

Qt编写手机端视频播放器/推流工具/Onvif工具

一、视频播放器 同时支持多种解码内核&#xff0c;包括qmedia内核&#xff08;Qt4/Qt5/Qt6&#xff09;、ffmpeg内核&#xff08;ffmpeg2/ffmpeg3/ffmpeg4/ffmpeg5/ffmpeg6&#xff09;、vlc内核&#xff08;vlc2/vlc3&#xff09;、mpv内核&#xff08;mpv1/mp2&#xff09;、…

go slice 扩容实现

基于 Go 1.19。 go 的切片我们都知道可以自动地进行扩容&#xff0c;具体来说就是在切片的容量容纳不下新的元素的时候&#xff0c; 底层会帮我们为切片的底层数组分配更大的内存空间&#xff0c;然后把旧的切片的底层数组指针指向新的内存中&#xff1a; 目前网上一些关于扩容…

【DDD】学习笔记-软件开发团队的沟通与协作

领域驱动设计的核心是“领域”&#xff0c;因此要运用领域驱动设计&#xff0c;从一开始就要让团队走到正确的点儿上。当我们组建好了团队之后&#xff0c;应该从哪里开始&#xff1f;不是 UI 原型设计、不是架构设计、也不是设计数据库&#xff0c;这些事情虽然重要但却非最高…

Linux常见的管理命令

1. whoami 作用&#xff1a; 显示出当前有效的用户名称&#xff0c;Linux是多用户多任务 语法&#xff1a;whoami(选项) 选项&#xff1a; --help&#xff1a;在线帮助 --version&#xff1a;显示版本信息和退出 场景使用&#xff1a; 1. 当用户想要查看当前登录系统的用户…

时间数据前端显示格式化

背景 在实际我们通常需要在前端显示对数据操作的时间或者最近的更新时间&#xff0c;如果我们只是简单的使用 LocalDateTime.now()来传入数据不进行任何处理那么我们就会得到非常难看的数据 解决方式&#xff1a; 1). 方式一 在属性上加上注解&#xff0c;对日期进行格式…