IDEA Easy Code使用记录

下载安装(忽略)

设置

设置在idea的 Other Settings里面
分4个选项

  1. Type Mapper 类型映射(数据字段和java包装器映射)
  2. Template Setting 模板设置 默认会有Defult,MybatisPlus两个模板
  3. Table Editor Config 不知道
  4. Global Config 全局设置 (自己定义常量,函数)

语法

说明文档:
属性
$author 设置中的作者 java.lang.String
$modulePath 选中的module路径 java.lang.String
$projectPath 项目绝对路径 java.lang.String

对象
$tableInfo 表对象
    obj 表原始对象 com.intellij.database.model.DasTable
    name 表名(转换后的首字母大写)java.lang.String
    comment 表注释 java.lang.String
    fullColumn 所有列 java.util.List<ColumnInfo>
    pkColumn 主键列 java.util.List<ColumnInfo>
    otherColumn 其他列 java.util.List<ColumnInfo>,除主键以外的列
    savePackageName 保存的包名 java.lang.String
    savePath 保存路径 java.lang.String
    saveModelName 保存的model名称 java.lang.String
columnInfo 列对象
    obj 列原始对象 com.intellij.database.model.DasColumn
    name 列名(首字母小写) java.lang.String
    comment 列注释 java.lang.String
    type 列类型(类型全名) java.lang.String
    shortType 列类型(短类型) java.lang.String
    custom 是否附加列 java.lang.Boolean
    ext 附加字段(Map类型) java.lang.Map<java.lang.String, java.lang.Object>
$tableInfoList java.util.List<TableInfo>所有选中的表
$importList 所有需要导入的包集合 java.util.Set<java.lang.String>

回调
&callback 回调对象
    setFileName(String) 设置文件储存名字
    setSavePath(String) 设置文件储存路径,默认使用选中路径
    setReformat(Boolean) 设置是否重新格式化生成后的代码,默认为true

工具
$tool
    firstUpperCase(String name) 首字母大写方法
    firstLowerCase(String name) 首字母小写方法
    getClsNameByFullName(String fullName) 通过包全名获取类名
    getJavaName(String name) 将下划线分割字符串转驼峰命名(属性名)
    getClassName(String name) 将下划线分割字符串转驼峰命名(类名)
    hump2Underline(String str) 将驼峰字符串转下划线字符串
    append(Object... objs) 多个数据进行拼接
    newHashSet(Object... objs) 创建一个HashSet对象
    newArrayList(Object... objs) 创建一个ArrayList对象
    newLinkedHashMap() 创建一个LinkedHashMap()对象
    newHashMap() 创建一个HashMap()对象
    getField(Object obj, String fieldName) 获取对象的属性值,可以访问任意修饰符修饰的属性.配合debug方法使用.
    call(Object... objs) 空白执行方法,用于调用某些方法时消除返回值
    debug(Object obj) 调式方法,用于查询对象结构.可查看对象所有属性与public方法
    serial() 随机获取序列化的UID
    service(String serviceName, Object... param)远程服务调用
    parseJson(String) 将字符串转Map对象
    toJson(Object, Boolean) 将对象转json对象,Boolean:是否格式化json,不填时为不格式化。
    toUnicode(String, Boolean) 将String转换为unicode形式,Boolean:是否转换所有符号,不填时只转换中文及中文符号。
$time
    currTime(String format) 获取当前时间,指定时间格式(默认:yyyy-MM-dd HH:mm:ss)
$generateService
    run(String, Map<String,Object>) 代码生成服务,参数1:模板名称,参数2:附加参数。
$dasUtil Database提供的工具类,具体可方法请查看源码,适用于高端玩家
$dbUtil  Database提供的工具类,具体可方法请查看源码,适用于高端玩家

语法说明补充:

  1. $!define 引入全局变量
  2. ‘#’ 使用函数
  3. $ 调用对象

自己的模板

全局函数

##去除表前缀
#macro(removePrefix $prefix)
    #set($prefix = $tool.append($prefix, '_'))
    #set($length = $!prefix.length())
    $!tableInfo.setName($tool.getClassName($tableInfo.obj.name.substring($length)))
#end

##表除主键以外的字段按逗号拼接
#macro(getOtherColumn $otherColumn)
    #foreach($column in $tableInfo.otherColumn)
        #if(!$otherColumn.equals(''))
            #set($otherColumn = $tool.append($otherColumn, ','))
        #end
        #set($otherColumn = $tool.append($otherColumn, $column.getName()))
    #end
#end

##设置表名
#macro(setTableName $name)
    $!tableInfo.setName($name)
#end

##初始化,拼接后缀名,拼接首字母小写名,拼接集合名,拼接查询的方法名
#macro(init)

    #set($entity = $!tool.append($tableInfo.name, 'Entity'))
    #set($dto = $!tool.append($tableInfo.name, 'DTO'))
    #set($pageSearch = $!tool.append($tableInfo.name, 'PageSearch'))
    #set($search = $!tool.append($tableInfo.name, 'Search'))
    #set($service = $!tool.append($tableInfo.name, 'Service'))
    #set($serviceImpl = $!tool.append($tableInfo.name, 'ServiceImpl'))
    #set($mapper = $!tool.append($tableInfo.name, 'Mapper'))
    #set($controller = $!tool.append($tableInfo.name, 'Controller'))

    #set($lowerCaseEntity = $!tool.firstLowerCase($entity))
    #set($lowerCaseDto = $!tool.firstLowerCase($dto))
    #set($lowerCasePageSearch = $!tool.firstLowerCase($pageSearch))
    #set($lowerCaseSearch = $!tool.firstLowerCase($search))
    #set($lowerCaseService = $!tool.firstLowerCase($service))
    #set($lowerCasSserviceImpl = $!tool.firstLowerCase($serviceImpl))
    #set($lowerCaseMapper = $!tool.firstLowerCase($mapper))

    #set($entityList = $!tool.append($lowerCaseEntity, 'List'))
    #set($dtoList = $!tool.append($lowerCaseDto, 'List'))
    
    #set($listPagePrefix = $tool.append('listPage', $!tableInfo.getName()))
    #set($listPrefix = $tool.append('list', $!tableInfo.getName()))

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

全局变量

tablePrefix 表名前缀
company 公司名称
requestMapping 请求前缀

entity模板

$!define
$!me

## 去除表名前缀
#removePrefix($!tablePrefix)

#init()


##设置表名
#setTableName($entity)

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

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

##初始化除其他以外的字段
#set($otherColumn = '')
##赋值
#getOtherColumn($otherColumn)

#set($comment = $!tool.append($!tableInfo.getComment(), '实体类'))
#set($title = $!tool.append($entity, '.java<br>'))

import com.dsa.validate.annotation.Group;
import com.dsa.validate.constant.GroupConstant;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
import javax.validation.constraints.*;

/**
 * $comment
 * $title
 * Description: <br>
 * Copyright: Copyright (c) 2020<br>
 * Company: $!company
 * @author $!author
 * @create $time.currTime("yyyy-MM-dd HH:mm:ss")
 */
@Data
@AllArgsConstructor
@NoArgsConstructor
@Group(name = GroupConstant.ADD, fields = "$otherColumn")
@Group(name = GroupConstant.EDIT, fields = "$pk.getName()")
@Group(name = GroupConstant.DEL, fields = "$pk.getName()")
public class $entity {
    
    #foreach($column in $tableInfo.fullColumn)
 #if(${column.comment})/**
      * ${column.comment}
      */#end
      
#set($flag = ${column.obj.isNotNull()})
#set($type = $!tool.getField($column.obj.dataType, "typeName"))
#set($length = $column.obj.dataType.getLength())
    #if($flag && $type.equals('varchar'))
 @NotBlank(message = "${column.comment}不能为空")
     @Size(min = 1, max = $length, message = "${column.comment}必须在1~$length之间")
     private $!{tool.getClsNameByFullName($column.type)} $!{column.name};
        #elseif($flag) 
 @NotNull(message = "${column.comment}不能为空")
     private $!{tool.getClsNameByFullName($column.type)} $!{column.name};
        #elseif($type.equals('varchar'))
 @Size(min = 1, max = $length, message = "${column.comment}必须在1~$length之间")
     private $!{tool.getClsNameByFullName($column.type)} $!{column.name};
        #else
 private $!{tool.getClsNameByFullName($column.type)} $!{column.name};
    #end
        
    #end
} 

dto模板

$!define
$!me

## 去除表名前缀
#removePrefix($!tablePrefix)

#init()

##设置表名
#setTableName($dto)

##定义设置包名后缀的宏定义
#setPackageSuffix("pojo.dto")

##定义直接保存路径与文件名简化的宏定义
#save("/pojo/dto", ".java")

#set($comment = $!tool.append($!tableInfo.getComment(), 'DTO'))
#set($title = $!tool.append($dto, '.java<br>'))

import $tool.append($!tableInfo.getSavePackageName(), '.pojo.entity.', $entity, ';')
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.NoArgsConstructor;

/**
 * $comment
 * Title: $title
 * Description: <br>
 * Copyright: Copyright (c) 2020<br>
 * Company: $!company
 * @author $!author
 * @create $time.currTime("yyyy-MM-dd HH:mm:ss")
 */
@Data
@NoArgsConstructor
@EqualsAndHashCode(callSuper = true)
public class $dto extends $entity {
    
}

search

$!define
$!me

## 去除表名前缀
#removePrefix($!tablePrefix)

#init()

##设置表名
#setTableName($search)

##定义设置包名后缀的宏定义
#setPackageSuffix("api.search")

##定义直接保存路径与文件名简化的宏定义
#save("/api/search", ".java")

#set($comment = $!tool.append($!tableInfo.getComment(), 'Search'))
#set($title = $!tool.append($search, '.java<br>'))

import lombok.Data;

/**
 * $comment
 * Title: $title
 * Description: <br>
 * Copyright: Copyright (c) 2020<br>
 * Company: $!company
 * @author $!author
 * @create $time.currTime("yyyy-MM-dd HH:mm:ss")
 */
@Data
public class $search {
    
    /**
     * 文件名称
     */
    private String fileName;
    
}

pageSearch

$!define
$!me

## 去除表名前缀
#removePrefix($!tablePrefix)

#init()

##设置表名
#setTableName($pageSearch)

##定义设置包名后缀的宏定义
#setPackageSuffix("api.search")

##定义直接保存路径与文件名简化的宏定义
#save("/api/search", ".java")

#set($comment = $!tool.append($!tableInfo.getComment(), 'PageSearch'))
#set($title = $!tool.append($pageSearch, '.java<br>'))

import com.dsa.core.api.search.BaseSearch;
import lombok.Data;
import lombok.EqualsAndHashCode;

/**
 * $comment
 * Title: $title
 * Description: <br>
 * Copyright: Copyright (c) 2020<br>
 * Company: $!company
 * @author $!author
 * @create $time.currTime("yyyy-MM-dd HH:mm:ss")
 */
@Data
@EqualsAndHashCode(callSuper = true)
public class $pageSearch extends BaseSearch {
    
    
}

controller

$!define
$!me

## 去除表名前缀
#removePrefix($!tablePrefix)

#init()

##设置表名
#setTableName($controller)

##定义设置包名后缀的宏定义
#setPackageSuffix("api.controller")

##定义直接保存路径与文件名简化的宏定义
#save("/api/controller", ".java")

#set($comment = $!tool.append($!tableInfo.getComment(), '资源控制器'))
#set($title = $!tool.append($controller, '.java<br>'))

import com.dsa.core.api.response.ResponseBean;
import com.dsa.core.enums.UnicomResponseEnums;
import com.dsa.validate.annotation.ValiGroup;
import com.dsa.validate.constant.GroupConstant;
import org.springframework.web.bind.annotation.*;
import org.springframework.validation.annotation.Validated;
import $tool.append($!tableInfo.getSavePackageName(), '.pojo.dto.', $dto, ';')
import $tool.append($!tableInfo.getSavePackageName(), '.service.', $service, ';')
import $tool.append($!tableInfo.getSavePackageName(), '.service.', $service, ';')
import $tool.append($!tableInfo.getSavePackageName(), '.api.search.', $pageSearch, ';')
import $tool.append($!tableInfo.getSavePackageName(), '.api.search.', $search, ';')
import javax.annotation.Resource;
import java.util.List;
import javax.validation.constraints.NotEmpty;
import com.dsa.core.service.PageBean;
import javax.servlet.http.HttpServletResponse;

/**
 * $comment
 * Title: $title
 * Description: <br>
 * Copyright: Copyright (c) 2020<br>
 * Company: $!company
 * @author $!author
 * @create $time.currTime("yyyy-MM-dd HH:mm:ss")
 */
@RestController
@RequestMapping(value = $!requestMapping)
@Validated
public class $controller {
    
    @Resource
    private $service $lowerCaseService;
    
    /**
     * 新增$!tableInfo.getComment()记录
     * @param $lowerCaseDto $!tool.append($!tableInfo.getComment(), 'DTO')
     * @return 新增数量
     * @author $!author
     * @create $time.currTime("yyyy-MM-dd HH:mm:ss")
     */
    @PostMapping(value = "/add")
    public ResponseBean<Integer> add(@RequestBody @ValiGroup(GroupConstant.ADD) $dto $lowerCaseDto) {
        Integer result = $tool.append($lowerCaseService, '.save(', $lowerCaseDto, ');')
        return new ResponseBean<>(UnicomResponseEnums.SUCCESS, result);
    }
    
    /**
     * 批量新增$!tableInfo.getComment()记录
     * @param $dtoList $!tool.append($!tableInfo.getComment(), 'DTO集合')
     * @return 新增数量
     * @author $!author
     * @create $time.currTime("yyyy-MM-dd HH:mm:ss")
     */
    @PostMapping(value = "/batchAdd")
    public ResponseBean<Integer> add(@RequestBody @ValiGroup(GroupConstant.ADD) @NotEmpty(message = "$!tool.append($!tableInfo.getComment(),
    'DTO集合', '不能为空')") List<$dto> $dtoList) {
        Integer result = $tool.append($lowerCaseService, '.save(', $dtoList, ');')
        return new ResponseBean<>(UnicomResponseEnums.SUCCESS, result);
    }
    
    /**
     * 更新$!tableInfo.getComment()记录
     * @param $lowerCaseDto $!tool.append($!tableInfo.getComment(), 'DTO')
     * @return 更新数量
     * @author $!author
     * @create $time.currTime("yyyy-MM-dd HH:mm:ss")
     */
    @PostMapping(value = "/edit")
    public ResponseBean<Integer> edit(@RequestBody @ValiGroup(GroupConstant.EDIT) $dto $lowerCaseDto) {
        Integer result = $tool.append($lowerCaseService, '.modify(', $lowerCaseDto, ');')
        return new ResponseBean<>(UnicomResponseEnums.SUCCESS, result);
    }
 
    /**
     * 删除$!tableInfo.getComment()记录
     * @param $lowerCaseDto $!tool.append($!tableInfo.getComment(), 'DTO')
     * @return 删除数量
     * @author $!author
     * @create $time.currTime("yyyy-MM-dd HH:mm:ss")
     */
    @PostMapping(value = "/remove")
    public ResponseBean<Integer> remove(@RequestBody @ValiGroup(GroupConstant.DEL) $dto $lowerCaseDto) {
        Integer result = $tool.append($lowerCaseService, '.remove(', $lowerCaseDto, ');')
        return new ResponseBean<>(UnicomResponseEnums.SUCCESS, result);
    }
    
    /**
     * 批量删除$!tableInfo.getComment()记录
     * @param $dtoList $!tool.append($!tableInfo.getComment(), 'DTO集合')
     * @return 删除数量
     * @author $!author
     * @create $time.currTime("yyyy-MM-dd HH:mm:ss")
     */
    @PostMapping(value = "/batchRemove")
    public ResponseBean<Integer> remove(@RequestBody @ValiGroup(GroupConstant.DEL) @NotEmpty(message = "$!tool.append($!tableInfo.getComment(),
    'DTO集合', '不能为空')") List<$dto> $dtoList) {
        Integer result = $tool.append($lowerCaseService, '.remove(', $dtoList, ');')
        return new ResponseBean<>(UnicomResponseEnums.SUCCESS, result);
    }
    
    /**
     * 分页查询$!tableInfo.getComment()记录
     * @param $lowerCasePageSearch $!tool.append($!tableInfo.getComment(), 'PageSearch')
     * @return $!tableInfo.getComment()集合
     * @author $!author
     * @create $time.currTime("yyyy-MM-dd HH:mm:ss")
     */
    @PostMapping(value = "/search")
    public ResponseBean<PageBean<LinkageConfigDTO>> search(@RequestBody $pageSearch $lowerCasePageSearch) {
        PageBean<$dto> result = $tool.append($lowerCaseService, '.', $listPagePrefix, 's(', $lowerCasePageSearch, ');')
        return new ResponseBean<>(UnicomResponseEnums.SUCCESS, result);
    }
    
    /**
     * 查询$!tableInfo.getComment()记录
     * @param $lowerCaseSearch $!tool.append($!tableInfo.getComment(), 'Search')
     * @return $!tableInfo.getComment()集合
     * @author $!author
     * @create $time.currTime("yyyy-MM-dd HH:mm:ss")
     */
    @PostMapping(value = "/list")
    public ResponseBean<List<$dto>> list(@RequestBody $search $lowerCaseSearch) {
        List<$dto> result = $tool.append($lowerCaseService, '.', $listPrefix, 's(', $lowerCaseSearch, ');')
        return new ResponseBean<>(UnicomResponseEnums.SUCCESS, result);
    }
    
    /**
     * 导出$!tableInfo.getComment()记录
     * @param $lowerCaseSearch $!tool.append($!tableInfo.getComment(), 'Search')
     * @param response 响应
     * @author $!author
     * @create $time.currTime("yyyy-MM-dd HH:mm:ss")
     */
    @PostMapping(value = "export")
    public void export(@RequestBody $search $lowerCaseSearch, HttpServletResponse response) {
        $tool.append($lowerCaseService, '.export(', $lowerCaseSearch,  ', response);')
    }
    
}

service

$!define
$!me

## 去除表名前缀
#removePrefix($!tablePrefix)


#setTableSuffix("Service")
#set($service = $tableName)

#init()

##设置表名
#setTableName($service)

##定义设置包名后缀的宏定义
#setPackageSuffix("service")

##定义直接保存路径与文件名简化的宏定义
#save("/service", ".java")

#set($comment = $!tool.append($!tableInfo.getComment(), '资源服务接口'))
#set($title = $!tool.append($service, '.java<br>'))

import java.util.List;
import $tool.append($!tableInfo.getSavePackageName(), '.pojo.dto.', $dto, ';')
import $tool.append($!tableInfo.getSavePackageName(), '.api.search.', $pageSearch, ';')
import $tool.append($!tableInfo.getSavePackageName(), '.api.search.', $search, ';')
import com.dsa.core.service.PageBean;
import javax.servlet.http.HttpServletResponse;

/**
* $comment
* Title: $title
* Description: <br>
* Copyright: Copyright (c) 2020<br>
* Company: $!company
* @author $!author
* @create $time.currTime("yyyy-MM-dd")
*/
public interface $service {
    
    /**
     * 保存$!tableInfo.getComment()记录
     * @param $lowerCaseDto $!tool.append($!tableInfo.getComment(), 'DTO')
     * @return 插入条数
     * @author $!author
     * @create $time.currTime("yyyy-MM-dd HH:mm:ss")
     */
    Integer save($dto $lowerCaseDto);
    
    /**
     * 批量保存$!tableInfo.getComment()记录
     * @param $dtoList $!tool.append($!tableInfo.getComment(), 'DTO集合')
     * @return 插入条数
     * @author $!author
     * @create $time.currTime("yyyy-MM-dd HH:mm:ss")
     */
    Integer save(List<$dto> $dtoList);
    
    /**
     * 更新$!tableInfo.getComment()记录
     * @param $lowerCaseDto $!tool.append($!tableInfo.getComment(), 'DTO集合')
     * @return 更新条数
     * @author $!author
     * @create $time.currTime("yyyy-MM-dd HH:mm:ss")
     */
    Integer modify($dto $lowerCaseDto);
    
    /**
     * 删除$!tableInfo.getComment()记录
     * @param $lowerCaseDto $!tool.append($!tableInfo.getComment(), 'DTO')
     * @return 删除条数
     * @author $!author
     * @create $time.currTime("yyyy-MM-dd HH:mm:ss")
     */
    Integer remove($dto $lowerCaseDto);
    
    /**
     * 批量删除$!tableInfo.getComment()记录
     * @param $dtoList $!tool.append($!tableInfo.getComment(), 'DTO集合')
     * @return 删除条数
     * @author $!author
     * @create $time.currTime("yyyy-MM-dd HH:mm:ss")
     */
    Integer remove(List<$dto> $dtoList);
    
    /**
     * 分页查询$!tableInfo.getComment()记录
     * @param $lowerCasePageSearch $!tool.append($!tableInfo.getComment(), 'PageSearch')
     * @return $!tableInfo.getComment()集合
     * @author $!author
     * @create $time.currTime("yyyy-MM-dd HH:mm:ss")
     */
    PageBean<$dto> $tool.append($listPagePrefix, 's')($pageSearch $lowerCasePageSearch);
    
    /**
     * 查询$!tableInfo.getComment()记录
     * @param $lowerCaseSearch $!tool.append($!tableInfo.getComment(), 'Search')
     * @return $!tableInfo.getComment()集合
     * @author $!author
     * @create $time.currTime("yyyy-MM-dd HH:mm:ss")
     */
    List<$dto> $tool.append($listPrefix, 's')($search $lowerCaseSearch);
    
    /**
     * 导出$!tableInfo.getComment()记录
     * @param $lowerCaseSearch $!tool.append($!tableInfo.getComment(), 'Search')
     * @param response 响应
     * @author $!author
     * @create $time.currTime("yyyy-MM-dd HH:mm:ss")
     */
    void export($search $lowerCaseSearch, HttpServletResponse response);
    
}

serviceImpl

$!define
$!me

## 去除表名前缀
#removePrefix($!tablePrefix)

#init()

##设置表名
#setTableName($serviceImpl)

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

##定义直接保存路径与文件名简化的宏定义
#save("/service/impl", ".java")

#set($comment = $!tool.append($!tableInfo.getComment(), '资源服务接口实现类'))
#set($title = $!tool.append($serviceImpl, '.java<br>'))

import $tool.append($!tableInfo.getSavePackageName(), '.pojo.dto.', $dto, ';')
import $tool.append($!tableInfo.getSavePackageName(), '.pojo.entity.', $enetity, ';')
import $tool.append($!tableInfo.getSavePackageName(), '.dao.', $mapper, ';')
import $tool.append($!tableInfo.getSavePackageName(), '.service.', $service, ';')
import $tool.append($!tableInfo.getSavePackageName(), '.api.search.', $pageSearch, ';')
import $tool.append($!tableInfo.getSavePackageName(), '.api.search.', $search, ';')
import org.springframework.stereotype.Service;
import com.github.pagehelper.PageHelper;
import javax.annotation.Resource;
import java.util.ArrayList;
import java.util.List;
import java.util.Map;
import com.dsa.core.service.PageBean;
import cn.hutool.poi.excel.BigExcelWriter;
import cn.hutool.poi.excel.ExcelUtil;
import java.io.IOException;
import java.io.OutputStream;
import java.util.LinkedHashMap;
import javax.servlet.http.HttpServletResponse;
import cn.hutool.core.io.IoUtil;

/**
 * $comment
 * Title: $title
 * Description: <br>
 * Copyright: Copyright (c) 2020<br>
 * Company: $!company
 * @author $!author
 * @create $time.currTime("yyyy-MM-dd HH:mm:ss")
 */
@Service
public class $serviceImpl implements $service {
    
    @Resource
    private $mapper $lowerCaseMapper;
    
    /**
     * 标题
     */
    private static final String TITLE = "";
    
    /**
     * 保存$!tableInfo.getComment()记录
     * @param $lowerCaseDto $!tool.append($!tableInfo.getComment(), 'DTO')
     * @return 插入条数
     * @author $!author
     * @create $time.currTime("yyyy-MM-dd HH:mm:ss")
     */
    @Override
    public Integer save($dto $lowerCaseDto) {
        $entity entity = new $entity();
#foreach($column in $tableInfo.otherColumn)
        #set($upperCaseName = $tool.firstUpperCase($column.name))
        $tool.append('entity.set',$upperCaseName, '(', $lowerCaseDto, '.get', $upperCaseName, '());')
#end
        return $tool.append($lowerCaseMapper, '.insert(entity);')
    }
    
    /**
     * 批量保存$!tableInfo.getComment()记录
     * @param $dtoList $!tool.append($!tableInfo.getComment(), 'DTO集合')
     * @return 插入条数
     * @author $!author
     * @create $time.currTime("yyyy-MM-dd HH:mm:ss")
     */
    @Override
    public Integer save(List<$dto> $dtoList) {
        List<$entity> entityList = new ArrayList<>();
        $entity entity;
        for ($dto $lowerCaseDto: $dtoList) {
            entity = new $entity();
#foreach($column in $tableInfo.otherColumn)
            #set($upperCaseName = $tool.firstUpperCase($column.name))
            $tool.append('entity.set',$upperCaseName, '(', $lowerCaseDto, '.get', $upperCaseName, '());')
#end
            entityList.add(entity);
        }
        return $tool.append($lowerCaseMapper, '.batchInsert(entityList);')
    }
    
    /**
     * 更新$!tableInfo.getComment()记录
     * @param $lowerCaseDto $!tool.append($!tableInfo.getComment(), 'DTO')
     * @return 更新条数
     * @author $!author
     * @create $time.currTime("yyyy-MM-dd HH:mm:ss")
     */
    @Override
    public Integer modify($dto $lowerCaseDto) {
        $entity entity = new $entity();
#foreach($column in $tableInfo.fullColumn)
        #set($upperCaseName = $tool.firstUpperCase($column.name))
        $tool.append('entity.set',$upperCaseName, '(', $lowerCaseDto, '.get', $upperCaseName, '());')
#end
        return $tool.append($lowerCaseMapper, '.update(entity);')
    }
    
    /**
     * 删除$!tableInfo.getComment()记录
     * @param $lowerCaseDto $!tool.append($!tableInfo.getComment(), 'DTO')
     * @return 删除条数
     * @author $!author
     * @create $time.currTime("yyyy-MM-dd HH:mm:ss")
     */
    @Override
    public Integer remove($dto $lowerCaseDto) {
        $entity entity = new $entity();
        #set($upperCaseName = $tool.firstUpperCase($pk.name))
$tool.append('entity.set',$upperCaseName, '(', $lowerCaseDto, '.get', $upperCaseName, '());')
        return $tool.append($lowerCaseMapper, '.delete(entity);')
    }
    
    /**
     * 批量删除$!tableInfo.getComment()记录
     * @param $dtoList $!tool.append($!tableInfo.getComment(), 'DTO集合')
     * @return 删除条数
     * @author $!author
     * @create $time.currTime("yyyy-MM-dd HH:mm:ss")
     */
    @Override
    public Integer remove(List<$dto> $dtoList) {
        List<$entity> entityList = new ArrayList<>();
        $entity entity;
        for ($dto $lowerCaseDto: $dtoList) {
            entity = new $entity();
            #set($upperCaseName = $tool.firstUpperCase($pk.name))
$tool.append('entity.set',$upperCaseName, '(', $lowerCaseDto, '.get', $upperCaseName, '());')
            entityList.add(entity);
        }
        return $tool.append($lowerCaseMapper, '.batchDelete(entityList);')
    }
    
    /**
     * 分页查询$!tableInfo.getComment()记录
     * @param $lowerCasePageSearch $!tool.append($!tableInfo.getComment(), 'PageSearch')
     * @return $!tableInfo.getComment()集合
     * @author $!author
     * @create $time.currTime("yyyy-MM-dd HH:mm:ss")
     */
    @Override
    public PageBean<$dto> $tool.append($listPagePrefix, 's')($pageSearch $lowerCasePageSearch) {
        PageHelper.startPage($tool.append($lowerCasePageSearch,'.getPageNum()', ', ', $tool.append($lowerCasePageSearch,'.getPageSize()')));
        List<$dto> result = $tool.append($lowerCaseMapper, '.select', $tool.firstUpperCase($listPagePrefix))($lowerCasePageSearch);
        return new PageBean<>(result);
    }
    
    /**
     * 查询$!tableInfo.getComment()记录
     * @param $lowerCaseSearch $!tool.append($!tableInfo.getComment(), 'Search')
     * @return $!tableInfo.getComment()集合
     * @author $!author
     * @create $time.currTime("yyyy-MM-dd HH:mm:ss")
     */
    @Override
    public List<$dto> $tool.append($listPrefix, 's')($search $lowerCaseSearch) {
        return $tool.append($lowerCaseMapper, '.select', $tool.firstUpperCase($listPrefix))($lowerCaseSearch);
    }
    
    /**
     * 导出$!tableInfo.getComment()记录
     * @param $lowerCaseSearch $!tool.append($!tableInfo.getComment(), 'Search')
     * @param response 响应
     * @author $!author
     * @create $time.currTime("yyyy-MM-dd HH:mm:ss")
     */
    @Override
    public void export($search $lowerCaseSearch, HttpServletResponse response) {
        List<$dto> result = $tool.append($lowerCaseMapper, '.select', $tool.firstUpperCase($listPrefix))($lowerCaseSearch);
        String fileName = $tool.append($lowerCaseSearch, '.getFileName()') + System.currentTimeMillis() + ".xlsx";
        
        // 标头map TODO 待加入
        Map<String, String> headMap = new LinkedHashMap<>(16);
        
        export(result, headMap, fileName, response);
    }
    
    /**
     * 导出$!tableInfo.getComment()记录方法
     * @param dataList 写入数据
     * @param headMap 标头
     * @param fileName 文件名
     * @param response 响应
     * @author $!author
     * @create $time.currTime("yyyy-MM-dd HH:mm:ss")
     */
    private synchronized void export(List<$dto> dataList, Map<String,String> headMap, String fileName, HttpServletResponse response) {
        BigExcelWriter writer = ExcelUtil.getBigWriter(fileName, "sheet1");
        writer.setOnlyAlias(true);
        writer.getWorkbook().getSheet("sheet1").setDefaultColumnWidth(25);
        writer.getWorkbook().getSheet("sheet1").setDefaultRowHeightInPoints(20);
        
        for (Map.Entry<String, String> entry : headMap.entrySet()) {
            writer.addHeaderAlias(entry.getKey(), entry.getValue());
        }
        writer.merge(3, TITLE);
        writer.write(dataList, true);
        
        try {
            OutputStream os = response.getOutputStream();
            response.setContentType("application/vnd.openxmlformats-officedocument.spreadsheetml.sheet;charset=utf-8");
            response.setCharacterEncoding("UTF-8");
            response.setHeader("Content-Disposition", "attachment;filename=" + java.net.URLEncoder.encode(fileName, "utf-8"));
            writer.flush(os, true);
            IoUtil.close(os);
        } catch (IOException e) {
            e.printStackTrace();
        }
        
    }
    
}

mapper

$!define
$!me

## 去除表名前缀
#removePrefix($!tablePrefix)

#init()

##设置表名
#setTableName($mapper)

##定义设置包名后缀的宏定义
#setPackageSuffix("dao")

##定义直接保存路径与文件名简化的宏定义
#save("/dao", ".java")

#set($comment = $!tool.append($!tableInfo.getComment(), '持久层映射器'))
#set($title = $!tool.append($mapper, '.java<br>'))

import $tool.append($!tableInfo.getSavePackageName(), '.pojo.entity.', $entity, ';')
import $tool.append($!tableInfo.getSavePackageName(), '.pojo.dto.', $dto, ';')
import $tool.append($!tableInfo.getSavePackageName(), '.api.search.', $pageSearch, ';')
import $tool.append($!tableInfo.getSavePackageName(), '.api.search.', $search, ';')
import org.springframework.stereotype.Repository;

import java.util.List;

/**
 * $comment
 * Title: $title
 * Description: <br>
 * Copyright: Copyright (c) 2020<br>
 * Company: $!company
 * @author $!author
 * @create $time.currTime("yyyy-MM-dd HH:mm:ss")
 */
@Repository
public interface $mapper {
    
    /**
     * 保存$!tableInfo.getComment()记录
     * @param $lowerCaseEntity $!tool.append($!tableInfo.getComment(), '实体类')
     * @return java.lang.Integer 插入条数
     * @author $!author
     * @create $time.currTime("yyyy-MM-dd HH:mm:ss")
     */
    Integer insert($entity $lowerCaseEntity);
    
    /**
     * 批量保存$!tableInfo.getComment()记录
     * @param $entityList $!tool.append($!tableInfo.getComment(), '实体类集合')
     * @return java.lang.Integer 插入条数
     * @author $!author
     * @create $time.currTime("yyyy-MM-dd HH:mm:ss")
     */
    Integer batchInsert(List<$entity> $entityList);
    
    /**
     * 更新$!tableInfo.getComment()记录
     * @param $lowerCaseEntity $!tool.append($!tableInfo.getComment(), '实体类')
     * @return java.lang.Integer 更新条数
     * @author $!author
     * @create $time.currTime("yyyy-MM-dd HH:mm:ss")
     */
    Integer update($entity $lowerCaseEntity);
    
    /**
     * 删除报警联动配置
     * @param $lowerCaseEntity $!tool.append($!tableInfo.getComment(), '实体类')
     * @return java.lang.Integer 删除条数
     * @author $!author
     * @create $time.currTime("yyyy-MM-dd HH:mm:ss")
     */
    Integer delete($entity $lowerCaseEntity);
    
    /**
     * 批量删除$!tableInfo.getComment()记录
     * @param $entityList $!tool.append($!tableInfo.getComment(), '实体类集合')
     * @return java.lang.Integer 删除条数
     * @author $!author
     * @create $time.currTime("yyyy-MM-dd HH:mm:ss")
     */
    Integer batchDelete(List<$entity> $entityList);
    
    /**
     * 分页查询$!tableInfo.getComment()记录
     * @param $lowerCasePageSearch $!tool.append($!tableInfo.getComment(), 'PageSearch')
     * @return $!tableInfo.getComment()集合
     * @author $!author
     * @create $time.currTime("yyyy-MM-dd HH:mm:ss")
     */
    List<$dto> $tool.append('select', $tool.firstUpperCase($listPagePrefix))($pageSearch $lowerCasePageSearch);
    
    /**
     * 查询$!tableInfo.getComment()记录
     * @param $lowerCaseSearch $!tool.append($!tableInfo.getComment(), 'Search')
     * @return $!tableInfo.getComment()集合
     * @author $!author
     * @create $time.currTime("yyyy-MM-dd HH:mm:ss")
     */
    List<$dto> $tool.append('select', $tool.firstUpperCase($listPrefix))($search $lowerCaseSearch);
    
}

mapper

##引入mybatis支持
$!mybatisSupport
$!define
$!me

## 去除表名前缀
#removePrefix($!tablePrefix)

#init()

#set($entityPath = $tool.append($!tableInfo.getSavePackageName(), '.pojo.entity.', $entity))
#setTableSuffix("Map")
#set($map = $tool.firstLowerCase($tableName))


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

<?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}.dao.$!{mapper}">
    
    <resultMap id = "$!map" type = "$!entityPath">
#foreach($column in $tableInfo.fullColumn)
        <result property="$!column.name" column="$!column.obj.name" jdbcType="$!column.ext.jdbcType"/>
#end
    </resultMap>
    
    <select id= "$tool.append('select', $tool.firstUpperCase($listPagePrefix))" resultMap= "$!map">
        SELECT
            #allSqlColumn()
        
        FROM
            $!{tableInfo.obj.parent.name}.$!{tableInfo.obj.name}
    </select>
    
    <select id= "$tool.append('select', $tool.firstUpperCase($listPrefix))" resultMap= "$!map">
        SELECT
            #allSqlColumn()
        
        FROM
            $!{tableInfo.obj.parent.name}.$!{tableInfo.obj.name}
    </select>
    
    <insert id = "insert" keyProperty="$!pk.name" useGeneratedKeys="true">
        INSERT INTO $!{tableInfo.obj.parent.name}.$!{tableInfo.obj.name}
        <trim prefix="(" suffix=")" suffixOverrides=",">
#foreach($column in $tableInfo.otherColumn)
            <if test="$!column.name != null #if($column.type.equals("java.lang.String"))and $!column.name != ''#end">
                $!column.obj.name,
            </if>
#end
        </trim>
        <trim prefix="VALUES (" suffix=")" suffixOverrides=",">
#foreach($column in $tableInfo.otherColumn)
            <if test="$!column.name != null #if($column.type.equals("java.lang.String"))and $!column.name != ''#end">
                #{$!column.name, jdbcType=$!column.ext.jdbcType},
            </if>
#end
        </trim>
    </insert>
    
    <insert id = "batchInsert" keyProperty="$!pk.name" useGeneratedKeys="true">
        INSERT INTO $!{tableInfo.obj.parent.name}.$!{tableInfo.obj.name}
            <trim prefix="(" suffix=")" suffixOverrides=",">
    #foreach($column in $tableInfo.otherColumn)
            $!column.obj.name,    
    #end
        </trim>
            VALUES
            <foreach collection ="list" item="item" index= "index" separator =",">
                <trim prefix="(" suffix=")" suffixOverrides=",">
        #foreach($column in $tableInfo.otherColumn)
            #{item.$!column.name, jdbcType=$!column.ext.jdbcType},
        #end
        </trim>
            </foreach>
    </insert>
    
    <update id = "update">
        UPDATE $!{tableInfo.obj.parent.name}.$!{tableInfo.obj.name}
        <set>
#foreach($column in $tableInfo.otherColumn)
            <if test="$!column.name != null#if($column.type.equals("java.lang.String")) and $!column.name != ''#end">
                $!column.obj.name = #{$!column.name, jdbcType=$!column.ext.jdbcType},
            </if>
#end
        </set>
       <where>
            $pk.obj.name = #{$!pk.name, jdbcType=$!pk.ext.jdbcType}
       </where>
    </update>
    
    <delete id="delete">
        DELETE 
        FROM 
            $!{tableInfo.obj.parent.name}.$!{tableInfo.obj.name} 
        WHERE
            $pk.obj.name = #{$!pk.name, jdbcType=$!pk.ext.jdbcType}
    </delete>
    
    <delete id="batchDelete">
        DELETE
        FROM
            $!{tableInfo.obj.parent.name}.$!{tableInfo.obj.name} 
        WHERE
            $pk.obj.name IN 
            <foreach collection="list" item="item" index="index" open="(" close=")" separator=",">
                #{item.$!pk.name, jdbcType=$!pk.ext.jdbcType}    
            </foreach>
    </delete>
    
</mapper>
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值