• idea系列---【EsayCode插件自定义Mybatis-Plus+Lombook+Swagger模板】


    作用:自动生成模板代码和实体类,简化开发人员工作,降低错误率。

    前置配置,去除指定前缀(“sys_”改成你要去掉的前缀)

    ##初始化区域
    
    ##去掉表的t_前缀
    $!tableInfo.setName($tool.getClassName($tableInfo.obj.name.replaceFirst("sys_","")))
    
    ##参考阿里巴巴开发手册,POJO 类中布尔类型的变量,都不要加 is 前缀,否则部分框架解析会引起序列化错误
    #foreach($column in $tableInfo.fullColumn)
    #if($column.name.startsWith("is") && $column.type.equals("java.lang.Boolean"))
        $!column.setName($tool.firstLowerCase($column.name.substring(2)))
    #end
    #end
    
    ##实现动态排除列
    #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)

    1.entity-注意if下面留空格,不然影响下一行对齐,造成下一行错位

    ##导入宏定义
    $!init
    $!define
    
    ##保存文件(宏定义)
    #save("/entity", ".java")
    
    ##包路径(宏定义)
    #setPackageSuffix("entity")
    
    ##自动导入包(全局变量)
    $!autoImport
    import com.baomidou.mybatisplus.extension.activerecord.Model;
    import com.baomidou.mybatisplus.annotation.IdType;
    import com.baomidou.mybatisplus.annotation.TableId;
    import com.baomidou.mybatisplus.annotation.TableName;
    import io.swagger.annotations.ApiModel;
    import io.swagger.annotations.ApiModelProperty;
    import lombok.Data;
    
    import java.io.Serializable;
    
    ##表注释(宏定义)
    #tableComment("表实体类")
    @Data
    @TableName("$tableInfo.obj.name")
    @ApiModel(value="$!{tableInfo.name}",description="$tableInfo.comment实体类")
    public class $!{tableInfo.name} extends Model<$!{tableInfo.name}> implements Serializable {
    
        #set($newList = $tool.newArrayList("createBy","updateBy","createTime","updateTime"))
    #foreach($column in $tableInfo.fullColumn)
        ##if(${column.comment})/**
        ##* ${column.comment}
        ##*/#end
        #if($newList.contains($column.name))
        
        @ApiModelProperty(name = "$!{column.name}", value = "$column.comment",hidden=true)
        private $!{tool.getClsNameByFullName($column.type)} $!{column.name};
        #elseif($tableInfo.pkColumn[0].name.equals($column.name))
        
        @TableId(type=IdType.ID_WORKER)
        @ApiModelProperty(name = "$!{column.name}", value = "$column.comment")
        private $!{tool.getClsNameByFullName($column.type)} $!{column.name};
        #else
        
        @ApiModelProperty(name = "$!{column.name}", value = "$column.comment")
        private $!{tool.getClsNameByFullName($column.type)} $!{column.name};
        #end
    #end
    
        private static final long serialVersionUID = $!tool.serial();
    }

    2.dao

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

    3.impl

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

    4.service

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

    5.controller

    ##导入宏定义
    $!init
    $!define
    
    ##设置表后缀(宏定义)
    #setTableSuffix("Controller")
    
    ##保存文件(宏定义)
    #save("/controller", "Controller.java")
    
    ##包路径(宏定义)
    #setPackageSuffix("controller")
    
    ##定义服务名
    #set($serviceName = $!tool.append($!tool.firstLowerCase($!tableInfo.name), "Service"))
    
    ##定义实体对象名
    #set($entityName = $!tool.firstLowerCase($!tableInfo.name))
    #set($PkType = $!{tool.getClsNameByFullName($!tableInfo.pkColumn[0].type)})
    
    import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
    import com.baomidou.mybatisplus.extension.api.ApiController;
    import com.baomidou.mybatisplus.extension.api.R;
    import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
    import $!{tableInfo.savePackageName}.entity.$!tableInfo.name;
    import $!{tableInfo.savePackageName}.service.$!{tableInfo.name}Service;
    import io.swagger.annotations.Api;
    import io.swagger.annotations.ApiOperation;
    import io.swagger.annotations.ApiParam;
    import com.github.xiaoymin.knife4j.annotations.ApiOperationSupport;
    import org.springframework.web.bind.annotation.*;
    
    import javax.annotation.Resource;
    import java.util.List;
    
    ##表注释(宏定义)
    #tableComment("表控制层")
    @RestController
    @Api(tags = "$!{tableInfo.comment}($!{tableInfo.name})")
    @RequestMapping("$!tool.firstLowerCase($!tableInfo.name)")
    public class $!{tableName} extends ApiController {
        /**
         * 服务对象
         */
        @Resource
        private $!{tableInfo.name}Service $!{serviceName};
    
        /**
         * 分页查询所有数据
         *
         * @param page 分页对象
         * @param $!entityName 查询实体
         * @return 所有数据
         */
        @ApiOperation(value = "分页查全部")
        @GetMapping("/selectAll")
        public R selectAll(Page<$!tableInfo.name> page,$!tableInfo.name $!entityName) {
            return success(this.$!{serviceName}.page(page, new QueryWrapper<>($!entityName)));
        }
    
        /**
         * 通过主键查询单条数据
         *
         * @param id 主键
         * @return 单条数据
         */
        @ApiOperation(value = "根据id查")
        @GetMapping("{id}")
        public R<$!tableInfo.name> selectOne(@PathVariable("id") $!{PkType} id) {
            return success(this.$!{serviceName}.getById(id));
        }
    
        /**
         * 新增数据
         *
         * @param $!entityName 实体对象
         * @return 新增结果
         */
        @ApiOperationSupport(ignoreParameters = {"$tool.append($!entityName,".id")"})
        @ApiOperation(value = "添加")
        @PostMapping("/add")
        public R<Boolean> insert(@RequestBody $!tableInfo.name $!entityName) {
            return success(this.$!{serviceName}.save($!entityName));
        }
    
        /**
         * 修改数据
         *
         * @param $!entityName 实体对象
         * @return 修改结果
         */
        @ApiOperation(value = "更新")
        @PutMapping("/update")
        public R<Boolean> update(@RequestBody $!tableInfo.name $!entityName) {
            return success(this.$!{serviceName}.updateById($!entityName));
        }
    
        /**
         * 删除数据
         *
         * @param idList 主键结合
         * @return 删除结果
         */
        @ApiOperation(value = "删除")
        @DeleteMapping("/del")
        public R<Boolean> delete(@RequestParam("idList") List<$!{PkType}> idList) {
            return success(this.$!{serviceName}.removeByIds(idList));
        }
    }
    愿你走出半生,归来仍是少年!
  • 相关阅读:
    Containers vs Serverless:本质区别是什么?
    博云 x 某农商行 | 银行信息化运维系统升级的最佳实践
    兼容传统应用,蓄力边缘云——博云胖容器解决方案
    使用Bookinfo应用测试Kuma服务网格
    干货 | 博云基于OVS自研容器网络插件在金融企业的落地实践
    开源分布式事务中间件Seata使用指南
    调研 | 5种分布式事务解决方案优缺点对比
    Ambassador,云原生应用的“门神”
    容器网络插件那么多,博云为什么基于OVS深度自研?
    观察 | 边缘云计算的概念理解
  • 原文地址:https://www.cnblogs.com/hujunwei/p/14698294.html
Copyright © 2020-2023  润新知