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

idea使用easyCode生成代码 (根据mybatis-plus模板创建自己的模板)

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

idea使用easyCode生成代码 (根据mybatis-plus模板创建自己的模板)

idea使用easyCode生成代码-(根据mybatis-plus模板创建自己的模板)

前言一、安装easyCode插件二、生成代码-使用默认模板三、生成代码-自定义模板

注意1:模板内使用#if()进行逻辑判断注意2:模板内获取对象的小写单词注意3:修改Mapping.xml文件的位置 我的自定义模板,可借鉴,不可直接用

1: entity.java.vm2: mapper.java.vm3: service.java.vm4: serviceImpl.java.vm5: controller.java.vm6: mapping.xml.vm


前言

easyCode代码生成器,减少低价值搬砖。
声明下:自定义模板内有大量自定义类,所以可以借鉴,不能直接使用。


一、安装easyCode插件

setting下载插件,重启idea,点开database连接上数据库。

针对有一定基础的程序员哈,小白的话,建议先老老实实手敲代码。

二、生成代码-使用默认模板

1: database连接上数据库后,选中某个表,右键->EasyCode->Generate Code,出现下面这个弹出框:

Module:是哪个项目模块
Package:生成的代码放在哪个包下
Path:生成代码所在的路劲
红框:这个是我自定义的模板(后面会怎么弄),这里可以选择默认的模板,如:MybatisPlus ,Default
Template:勾选需要生成哪些文件

2:选择完成后,点击OK就可以了。

三、生成代码-自定义模板

File->settings->Other Settings->EasyCode->Template
我是复制了MybatisPlus- Mixed,然后重名为:MybatisPlus-lt。在此基础上修改的模板内容

注意1:模板内使用#if()进行逻辑判断

我配置了字段自动插入,需要在字段属性上加额外的注解,所以这里用到了

#if($!{column.name} == ‘delFlag’)
@TableLogic
@TableField(fill = FieldFill.INSERT)
#end

注意2:模板内获取对象的小写单词

因为在实现类里有实现方法,所以需要使用到bookMapper,但是如何获取到Book对象的小写单词是个问题:

##定义实体对象名(驼峰)
#set($entityName = $!tool.firstLowerCase($!tableInfo.name))

说明下:

实现类里期望结果生成这个代码:bookMapper.deleteBatchIds(idList);

错误的:
下面这句的生成结果是:bookMapper;
$!tool.firstLowerCase($!tableInfo.name))Mapper.deleteBatchIds(idList);

正确的:
##定义实体对象名
#set($entityName = $!tool.firstLowerCase($!tableInfo.name))
这样去使用:
$!{entityName}Mapper.deleteBatchIds(idList);

例子:

注意3:修改Mapping.xml文件的位置

将BookMapping.xml 放在/src/main/resources/mapper/book目录下

我的自定义模板,可借鉴,不可直接用

模板内使用到了较多的自定义类,所以大家可以借鉴下,全盘照搬肯定是不行的。
自定义异常:CheckException
自定义返回类:baseResponse
自定义查询类:baseQuery
自定义:Msg
分页插件:PageHelper
id生成器:IdWorker

1: entity.java.vm
##导入宏定义
$!{define.vm}

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

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

##自动导入包(全局变量)
$!autoimport
import com.baomidou.mybatisplus.annotation.FieldFill;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableLogic;
import com.tao.base.baseQuery;
import lombok.Data;

import java.util.Date;

##表注释(宏定义)
#tableComment("表实体类")
@Data
public class $!{tableInfo.name} extends baseQuery {
#foreach($column in $tableInfo.fullColumn)
#if(${column.comment})
    
#end
#if($!{column.name} == 'delFlag')
    @TableLogic
    @TableField(fill = FieldFill.INSERT)
#end
#if($!{column.name} == 'createTime')
    @TableField(fill = FieldFill.INSERT)
#end
#if($!{column.name} == 'updateTime')
    @TableField(fill = FieldFill.INSERT_UPDATE)
#end
    private $!{tool.getClsNameByFullName($column.type)} $!{column.name};
    
#end
}

2: mapper.java.vm
##导入宏定义
$!{define.vm}

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

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

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

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

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

}

3: service.java.vm
##导入宏定义
$!{define.vm}


##设置表后缀(宏定义)
#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> {

    
    void deleteByIds(String ids);
    
    
}

4: serviceImpl.java.vm
##导入宏定义
$!{define.vm}

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

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

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

##定义实体对象名
#set($entityName = $!tool.firstLowerCase($!tableInfo.name))

import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import $!{tableInfo.savePackageName}.dao.$!{tableInfo.name}Mapper;
import $!{tableInfo.savePackageName}.entity.$!{tableInfo.name};
import $!{tableInfo.savePackageName}.service.$!{tableInfo.name}Service;
import org.springframework.stereotype.Service;

import javax.annotation.Resource;
import java.util.List;
import java.util.stream.Collectors;
import java.util.stream.Stream;

##表注释(宏定义)
#tableComment("表服务实现类")
@Service("$!tool.firstLowerCase($tableInfo.name)Service")
public class $!{tableName} extends ServiceImpl<$!{tableInfo.name}Mapper, $!{tableInfo.name}> implements $!{tableInfo.name}Service {


    @Resource
    private $!{tableInfo.name}Mapper ${entityName}Mapper;
    
    
    @Override
    public void deleteByIds(String ids) {
        String[] idsArr = ids.split(",");
        if (idsArr.length > 0) {
            List idList = Stream.of(idsArr).map(Long::valueOf).collect(Collectors.toList());
            $!{entityName}Mapper.deleteBatchIds(idList);
        }
    }
    
    
}

5: 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 com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.toolkit.IdWorker;
import com.github.pagehelper.PageHelper;
import com.github.pagehelper.PageInfo;
import com.tao.Enum.Msg;
import com.tao.base.baseQuery;
import com.tao.base.baseResponse;
import $!{tableInfo.savePackageName}.entity.$!tableInfo.name;
import $!{tableInfo.savePackageName}.service.$!{tableInfo.name}Service;
import com.tao.exception.CheckException;
import org.apache.commons.lang3.StringUtils;
import org.apache.ibatis.annotations.Param;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;

import java.util.List;

##表注释(宏定义)
#tableComment("表控制层")
@RestController
@RequestMapping("$!tool.firstLowerCase($!tableInfo.name)")
public class $!{tableName} {
    
    @Autowired
    private $!{tableInfo.name}Service $!{serviceName};

    
    @RequestMapping(value = "list", method = RequestMethod.POST)
    public baseResponse list(@RequestBody $!tableInfo.name model) {
        //条件查询
        QueryWrapper<$!tableInfo.name> queryWrapper = new QueryWrapper();
        //动态sql
//        if(StringUtils.isNotBlank(model.getAuthor())){
//            queryWrapper.lambda().eq($!tableInfo.name::getAuthor,model.getAuthor());
//        }
        //排序
        queryWrapper.lambda().orderByDesc($!tableInfo.name::getCreateTime);
        //执行查询
        List<$!tableInfo.name> list = $!{serviceName}.list(queryWrapper);
        //封装查询结果
        return new baseResponse(Msg.SUCCESS, list);
    }
    
    
    @RequestMapping(value = "listPage", method = RequestMethod.POST)
    public baseResponse listPage(@RequestBody $!tableInfo.name model) {
        //没有传分页参数时,默认设置查询前10条数据
        if (null == model.getPageSize()) {
            PageHelper.startPage(baseQuery.DEFAULT_PAGE, baseQuery.DEFAULT_SIZE);
        } else {
            PageHelper.startPage(model.getCurrentPage(), model.getPageSize());
        }
        //条件查询
        QueryWrapper<$!tableInfo.name> queryWrapper = new QueryWrapper();
        //动态sql
        if (StringUtils.isNotBlank(model.getAuthor())) {
            queryWrapper.lambda().eq($!tableInfo.name::getAuthor, model.getAuthor());
        }
        //排序
        queryWrapper.lambda().orderByDesc($!tableInfo.name::getCreateTime);
        //执行查询
        List<$!tableInfo.name> list = $!{serviceName}.list(queryWrapper);
        PageInfo<$!tableInfo.name> pageInfo = new PageInfo<>(list);
        //封装查询结果
        return new baseResponse(Msg.SUCCESS, pageInfo.getTotal(), pageInfo.getList());
    }
    
   
    @RequestMapping(value = "insert", method = RequestMethod.POST)
    public baseResponse insert(@RequestBody $!tableInfo.name model) {
        //设置默认id
        if (model.getId() == null) {
            model.setId(IdWorker.getId());
        }
        $!{serviceName}.save(model);
        //封装查询结果
        return new baseResponse(Msg.SUCCESS, model.getId());
    }

    
    @RequestMapping(value = "updateById", method = RequestMethod.PUT)
    public baseResponse updateById(@RequestBody $!tableInfo.name model) throws Exception {
        //字段检查
        if (null == (model.getId())) {
            throw new CheckException(Msg.CHECK_ATTRIBUTE_FAIL, "id不能为空");
        }

        $!{serviceName}.updateById(model);
        //封装查询结果
        return new baseResponse(Msg.SUCCESS);
    }


    
    @RequestMapping(value = "getById/{id}", method = RequestMethod.GET)
    public baseResponse getById(@PathVariable("id") Long id) {
        $!tableInfo.name temp = $!{serviceName}.getById(id);
        //封装查询结果
        return new baseResponse(Msg.SUCCESS, temp);
    }

    
    @RequestMapping(value = "deleteById/{id}", method = RequestMethod.DELETE)
    public baseResponse deleteById(@PathVariable("id") Long id) {
        $!{serviceName}.removeById(id);
        //封装查询结果
        return new baseResponse(Msg.SUCCESS);
    }

    
//    @RequestMapping(value = "deleteByIds/{ids}", method = RequestMethod.DELETE)
//    public baseResponse deleteByIds(@PathVariable("ids") String ids) throws Exception {
    @RequestMapping(value = "deleteByIds", method = RequestMethod.DELETE)
    public baseResponse deleteByIds(@Param("ids") String ids) throws Exception {
        //业务检查
        if (StringUtils.isEmpty(ids)) {
            throw new CheckException(Msg.CHECK_ATTRIBUTE_FAIL, "请传入正确的ids");
        }
        $!{serviceName}.deleteByIds(ids);
        //封装查询结果
        return new baseResponse(Msg.SUCCESS);
    }
    
    
}

6: mapping.xml.vm
##引入mybatis支持
$!{mybatisSupport.vm}
##定义实体对象名
#set($entityName = $!tool.firstLowerCase($!tableInfo.name))

##设置保存名称与保存位置
$!callback.setFileName($tool.append($!{tableInfo.name}, "Mapping.xml"))
$!callback.setSavePath($tool.append($modulePath, $tool.append("/src/main/resources/mapper/",$entityName)))

##拿到主键
#if(!$tableInfo.pkColumn.isEmpty())
    #set($pk = $tableInfo.pkColumn.get(0))
#end





    
#foreach($column in $tableInfo.fullColumn)
        
#end
    

    
    



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

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

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