栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

Easycode-MybatisCodeHelper的安装使用和Mybatis-Plus配置一键生成代码

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

Easycode-MybatisCodeHelper的安装使用和Mybatis-Plus配置一键生成代码

写在开始:一个搬砖程序员的随缘记录

文章目录
  • 一、结构
    • 1、项目目录结构
    • 2、数据库表结构
  • 二、Easycode-MybatisCodeHelper
    • 1、插件下载
    • 2、头部注释设置
    • 3、Type Mapper
    • 4、Global Config
    • 5.需要的jar包、配置和公共实体类
    • 6、Template Setting

一、结构 1、项目目录结构 2、数据库表结构

二、Easycode-MybatisCodeHelper 1、插件下载


下载完重启idea

2、头部注释设置

3、Type Mapper

4、Global Config

主要是针对init文件进行了修改。在生成实体类的时候排除了公共字段
init

##初始化区域

##去掉表的t_前缀
#if($tableInfo.obj.name.startsWith("自定义前缀_"))
    $!tableInfo.setName($tool.getClassName($tableInfo.obj.name.substring(4)))
#end

## 标记删除字段
#set($delete = "is_delete")

## 创建时间标识
#set($createTime = "create_time")

## 公共字段
#set($publicFelids = $tool.newHashSet(
    "id",
    "createUser",
    "createTime",
    "updateUser",
    "updateTime",
    "isDelete"
))

##实现动态排除列
#set($temp = $tool.newHashSet("testCreateTime", "otherColumn"))
#foreach($item in $temp)
    #set($newList = $tool.newArrayList())
    #foreach($column in $tableInfo.fullColumn)
        #if($column.name!=$item)
            ##带有反回值的方法调用时使用$tool.call来消除返回值
            $tool.call($newList.add($column))
        #end
    #end
    ##重新保存
    $tableInfo.setFullColumn($newList)
#end

##对importList进行篡改
#set($temp = $tool.newHashSet())
#foreach($column in $tableInfo.fullColumn)
    #if(!$column.type.startsWith("java.lang."))
        ##带有反回值的方法调用时使用$tool.call来消除返回值
        $tool.call($temp.add($column.type))
    #end
#end
##覆盖
#set($importList = $temp)
5.需要的jar包、配置和公共实体类

pom.xml


        
            org.projectlombok
            lombok
            true
        

        
        
            org.springframework.boot
            spring-boot-starter-jdbc
        
        
            mysql
            mysql-connector-java
        
        
        
            com.baomidou
            mybatis-plus-boot-starter
            3.3.1.tmp
        

        
        
            io.springfox
            springfox-swagger2
            2.5.0
        
        
            io.springfox
            springfox-swagger-ui
            2.5.0
        
        
            com.github.xiaoymin
            swagger-bootstrap-ui
            1.8.1
        

application.yml

server:
  port: 8080

spring:
  datasource:
    url: jdbc:mysql://127.0.0.1:3306/easy_code?useUnicode=true&characterEncoding=utf-8
    username: root
    password: admin
    driver-class-name: com.mysql.jdbc.Driver

mybatis-plus:
  global-config:
    db-config:
      logic-delete-field: is_delete  #全局逻辑删除字段值
      logic-delete-value: 1 # 逻辑已删除值(默认为 1)
      logic-not-delete-value: 0 # 逻辑未删除值(默认为 0)
  mapperLocations: classpath:mybatis
@Data
public class AbstractEntity {
    @ApiModelProperty(value = "id")
    private Integer id;

    @ApiModelProperty(value = "创建人")
    private String createUser;

    @ApiModelProperty(value = "创建时间")
    @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    @JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd HH:mm:ss")
    @TableField(value = "create_time", fill = FieldFill.INSERT)
    private Date createTime;

    @ApiModelProperty(value = "修改人")
    private String updateUser;

    @ApiModelProperty(value = "修改时间")
    @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    @JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd HH:mm:ss")
    @TableField(value = "update_time", fill = FieldFill.INSERT_UPDATE)
    private Date updateTime;
}

6、Template Setting

可以添加自定义的组,不改变默认的。针对不同的项目结构进行不同的配置

下面是我创建的EasyCode的

创建后是空的。然后按我的习惯需要创建:

entity.java 实体类
controller.java 控制层
service.java 接口层
serviceImpl.java 接口实现层
mapper.java 数据访问层
mapper.xml 数据访问层xml

创建后的

具体的代码配置:
entity.java

##引入宏定义
$!init
$!define
##定义初始变量
#set($tableName=$tool.append($tableInfo.name,""))
##设置回调
$!callback.setFileName($tool.append($tableName,".java"))
$!callback.setSavePath($tool.append($tableInfo.savePath,"/entity"))

##使用宏定义设置包后缀
#setPackageSuffix("entity")

##使用全局变量实现默认包导入
$!autoimport
import java.io.Serializable;

import com.cn.easycode.entity.AbstractEntity;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.NoArgsConstructor;
import lombok.AllArgsConstructor;
import com.baomidou.mybatisplus.annotation.TableName;
 
#tableComment("数据访问类")
@EqualsAndHashCode(callSuper = true)
@Data
@NoArgsConstructor
@AllArgsConstructor
@TableName("$!{tableInfo.obj.name}")
@ApiModel("$!{tableInfo.comment}实体类")
public class $!{tableName} extends AbstractEntity implements Serializable {
    
    private static final long serialVersionUID = $!tool.serial();
#foreach($column in $tableInfo.otherColumn)
    #set($have = false)
    #foreach($felid in $publicFelids)
        #if($column.name==$felid)
            #set($have = true)
            #break
        #end
    #end
    #if(!$have)

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

}

controller.java

##定义初始变量
###set($tableName = $tool.append($tableInfo.name, "Controller"))
#set($tableName = $tool.append($tableInfo.name.replaceFirst("Tbl",""),"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 com.baomidou.mybatisplus.core.metadata.IPage;
import $!{tableInfo.savePackageName}.entity.$!{tableInfo.name};
import $!{tableInfo.savePackageName}.service.$!{tableInfo.name}Service;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiImplicitParam;
import io.swagger.annotations.ApiImplicitParams;
import io.swagger.annotations.ApiOperation;
import org.springframework.web.bind.annotation.*;
import lombok.extern.slf4j.Slf4j;

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


@RestController
@RequestMapping("/$tool.firstLowerCase($tableInfo.name.replaceFirst("Tbl",""))")
@Slf4j
@Api(tags = "$!{tableInfo.comment}-API")
public class $!{tableName} {
    
    @Resource
    private $!{tableInfo.name}Service $!tool.firstLowerCase($tableInfo.name)Service;

    
    @GetMapping("/getPage")
    @ApiOperation("分页查询")
    @ApiImplicitParams({
            @ApiImplicitParam(name = "pageNum", value = "页数", defaultValue = "1", required = true, paramType = "query"),
            @ApiImplicitParam(name = "pageSize", value = "条数", defaultValue = "10", required = true, paramType = "query")}
    )
    public IPage<$!{tableInfo.name}> getPage(Integer page, Integer limit) {
        log.info("getPage, : {}, : {}", page, limit);
        return tblUserDatService.getPage(page, limit);
    }

    
    @GetMapping("/getList")
    @ApiOperation("列表查询(不分页)")
    public List<$!{tableInfo.name}> getList() {
        return tblUserDatService.getList();
    }

    
    @GetMapping("/getById/{id}")
    @ApiOperation("根据id查询详情")
    public $!{tableInfo.name} getById(@PathVariable("id") $!pk.shortType id) {
        log.info("getById, : {}", id);
        return tblUserDatService.getById(id);
    }

    
    @PostMapping("/add")
    @ApiOperation("新增")
    public $!{tableInfo.name} add(TblUserDat dat) {
        log.info("add, : {}", dat);
        return tblUserDatService.add(dat);
    }

    
    @PostMapping("/update")
    @ApiOperation("修改")
    public $!{tableInfo.name} update(TblUserDat dat) {
        log.info("update, : {}", dat);
        return tblUserDatService.update(dat);
    }

    
    @PostMapping("/delete/{id}")
    @ApiOperation("删除")
    public $!pk.shortType delete(@PathVariable("id") $!pk.shortType id) {
        log.info("delete, : {}", id);
        return tblUserDatService.delete(id);
    }

}

service.java

##引入宏定义
$!init
$!define
##定义初始变量
#set($tableName=$tool.append($tableInfo.name,"Service"))
#set($reqName=$tool.append("AddOrUpdate",$tableInfo.name.replaceFirst("TblSymlxc",""),"Req"))

##设置回调
$!callback.setFileName($tool.append($tableName,".java"))
$!callback.setSavePath($tool.append($tableInfo.savePath,"/service"))
##拿到主键
#if(!$tableInfo.pkColumn.isEmpty())
    #set($pk = $tableInfo.pkColumn.get(0))
#end

##使用宏定义设置包后缀
#setPackageSuffix("service")

import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.service.IService;
import $!{tableInfo.savePackageName}.entity.$!{tableInfo.name};

import java.util.List;
 

public interface $!{tableName} extends IService<$!{tableInfo.name}> {
    
    IPage<$!{tableInfo.name}> getPage(Integer page, Integer limit);

    
    List<$!{tableInfo.name}> getList();

    
    $!{tableInfo.name} getById($!pk.shortType id);

    
    $!{tableInfo.name} add($!{tableInfo.name} dat);

    
    $!{tableInfo.name} update($!{tableInfo.name} dat);

    
    $!pk.shortType delete($!pk.shortType id);
}

serviceImpl.java

##引入宏定义
$!init
$!define
##定义初始变量
#set($tableName=$tool.append($tableInfo.name,"ServiceImpl"))
#set($reqName=$tool.append("AddOrUpdate",$tableInfo.name.replaceFirst("TblSymlxc",""),"Req"))
##设置回调
$!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

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

import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import org.springframework.beans.BeanUtils;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import org.springframework.stereotype.Service;
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 java.util.List;
 

@Slf4j
@Service
public class $!{tableName} extends ServiceImpl<$!{tableInfo.name}Mapper, $!{tableInfo.name}> implements $!{tableInfo.name}Service {
    @Override
    public IPage<$!{tableInfo.name}> getPage(Integer page, Integer limit) {
        Page<$!{tableInfo.name}> pages = new Page<>(page, limit);
        QueryWrapper<$!{tableInfo.name}> queryWrapper = new QueryWrapper<>();
        return baseMapper.selectPage(pages, queryWrapper);
    }

    @Override
    public List<$!{tableInfo.name}> getList() {
        QueryWrapper<$!{tableInfo.name}> queryWrapper = new QueryWrapper<>();
        return baseMapper.selectList(queryWrapper);
    }

    @Override
    public $!{tableInfo.name} getById($!pk.shortType id) {
        return baseMapper.selectById(id);
    }

    @Override
    public $!{tableInfo.name} add($!{tableInfo.name} dat) {
        dat.setCreateUser(1);
        dat.setUpdateUser(1);

        baseMapper.insert(dat);
        return dat;
    }

    @Override
    public $!{tableInfo.name} update($!{tableInfo.name} dat) {
        if (dat.getId() == null) {
            log.info("id不能为空");
            return dat;
        }

        dat.setUpdateUser(1);

        baseMapper.updateById(dat);
        return dat;
    }

    @Override
    public $!pk.shortType delete($!pk.shortType id) {
       return baseMapper.deleteById(id);
    }
}

mapper.java

##引入宏定义
$!init
$!define
##定义初始变量
#set($tableName=$tool.append($tableInfo.name,"Mapper"))
##设置回调
$!callback.setFileName($tool.append($tableName,".java"))
$!callback.setSavePath($tool.append($tableInfo.savePath,"/mapper"))

##使用宏定义设置包后缀
#setPackageSuffix("mapper")
##使用全局变量实现默认包导入

import com.baomidou.mybatisplus.core.mapper.baseMapper;
import $!{tableInfo.savePackageName}.entity.$!{tableInfo.name};
 

public interface $!{tableName} extends baseMapper<$!{tableInfo.name}>{
 
}

mapper.xml

##引入宏定义
$!init
$!define
##引入mybatis支持
$!mybatisSupport

##设置保存名称与保存位置
$!callback.setFileName($tool.append($!{tableInfo.name}, "Mapper.xml"))
#set($tempIndex = $!tableInfo.savePackageName.lastIndexOf('.') + 1)
##set($mapppath=$tableInfo.savePackageName.substring($tempIndex))
$!callback.setSavePath($tool.append($modulePath, "/src/main/resources/mybatis/"))
 



 

根据自己的项目进行修改

Over

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/686566.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号