idea的easyCode的 MybatisPlus模板的配置详解
EasyCode插件
EasyCode插件是一款根据表结构生成代码的很方便的Idea插件,强烈推荐.并且可以自定义模板来控制生成的类
我在使用的过程中发现一些问题,现在把解决办法记录下来,我主要使用的是插件自带的mybatisplus模板
1.生成的代码中有大量的getset方法
lombok插件是个好东西,我删除了模板中的get和set方法,添加了lombok的注解,'
2.如果数据库中的表都有前缀"t_"导致生成的类名中都有一个前缀“T”
这个问题困扰我很久,改了各种模板,最后发现把init文件的第一行代码复制到define文件的第一行就可以,init文件根本就没有用.
3,生成的类中没有DTO对象
直接把entity模板文件复制一份改改就有了
下面分享下我修改后的模板
TemplateSetting配置项GroupName:MybatisPlus
如果没有MybatisPlus的groupname,可以新增一个
dto文件
##导入宏定义
$!define
##保存文件(宏定义)
#save("/dto","DTO.java")
##包路径(宏定义)
#setPackageSuffix("dto")
##自动导入包(全局变量)
$!autoImport
##importcom.baomidou.mybatisplus.extension.activerecord.Model;
importjava.io.Serializable;
importlombok.Data;
##importcom.baomidou.mybatisplus.annotation.IdType;
##importcom.baomidou.mybatisplus.annotation.TableId;
##表注释(宏定义)
#tableComment("表实体类")
@Data
@SuppressWarnings("serial")
publicclass$!{tableInfo.name}DTOimplementsSerializable{
#foreach($columnin$tableInfo.fullColumn)
#if(${column.comment})/**${column.comment}*/#end
private$!{tool.getClsNameByFullName($column.type)}$!{column.name};
#end
###foreach($columnin$tableInfo.fullColumn)
###getSetMethod($column)
###end
###foreach($columnin$tableInfo.pkColumn)
##/**
##*获取主键值
##*
##*@return主键值
##*/
##@Override
##protectedSerializablepkVal(){
##returnthis.$!column.name;
##}
###break
###end
}
controller文件
##导入宏定义
$!define
##设置表后缀(宏定义)
#setTableSuffix("Controller")
##保存文件(宏定义)
#save("/controller","Controller.java")
##包路径(宏定义)
#setPackageSuffix("controller")
##定义服务名
#set($serviceName=$!tool.append($!tool.firstLowerCase($!tableInfo.name),"Service"))
##定义实体对象名
#set($entityName=$!tool.firstLowerCase($!tableInfo.name))
importcom.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
importcom.baomidou.mybatisplus.extension.api.ApiController;
importcom.baomidou.mybatisplus.extension.api.R;
importcom.baomidou.mybatisplus.extension.plugins.pagination.Page;
import$!{tableInfo.savePackageName}.entity.$!tableInfo.name;
import$!{tableInfo.savePackageName}.service.$!{tableInfo.name}Service;
importorg.springframework.web.bind.annotation.*;
importjavax.annotation.Resource;
importjava.io.Serializable;
importjava.util.List;
##表注释(宏定义)
#tableComment("表控制层")
@RestController
@RequestMapping("$!tool.firstLowerCase($!tableInfo.name)")
publicclass$!{tableName}extendsApiController{
/**
*服务对象
*/
@Resource
private$!{tableInfo.name}Service$!{serviceName};
/**
*分页查询所有数据
*
*@parampage分页对象
*@param$!entityName查询实体
*@return所有数据
*/
@GetMapping
publicRselectAll(Page<$!tableInfo.name>page,$!tableInfo.name$!entityName){
returnsuccess(this.$!{serviceName}.page(page,newQueryWrapper<>($!entityName)));
}
/**
*通过主键查询单条数据
*
*@paramid主键
*@return单条数据
*/
@GetMapping("{id}")
publicRselectOne(@PathVariableSerializableid){
returnsuccess(this.$!{serviceName}.getById(id));
}
/**
*新增数据
*
*@param$!entityName实体对象
*@return新增结果
*/
@PostMapping
publicRinsert(@RequestBody$!tableInfo.name$!entityName){
returnsuccess(this.$!{serviceName}.save($!entityName));
}
/**
*修改数据
*
*@param$!entityName实体对象
*@return修改结果
*/
@PutMapping
publicRupdate(@RequestBody$!tableInfo.name$!entityName){
returnsuccess(this.$!{serviceName}.updateById($!entityName));
}
/**
*删除数据
*
*@paramidList主键结合
*@return删除结果
*/
@DeleteMapping
publicRdelete(@RequestParam("idList")ListidList){
returnsuccess(this.$!{serviceName}.removeByIds(idList));
}
}
serviceImpl文件
##导入宏定义
$!define
##设置表后缀(宏定义)
#setTableSuffix("ServiceImpl")
##保存文件(宏定义)
#save("/service/impl","ServiceImpl.java")
##包路径(宏定义)
#setPackageSuffix("service.impl")
importcom.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;
importorg.springframework.stereotype.Service;
##表注释(宏定义)
#tableComment("表服务实现类")
@Service("$!tool.firstLowerCase($tableInfo.name)Service")
publicclass$!{tableName}extendsServiceImpl<$!{tableInfo.name}Dao,$!{tableInfo.name}>implements$!{tableInfo.name}Service{
}
service文件
##导入宏定义
$!define
##设置表后缀(宏定义)
#setTableSuffix("Service")
##保存文件(宏定义)
#save("/service","Service.java")
##包路径(宏定义)
#setPackageSuffix("service")
importcom.baomidou.mybatisplus.extension.service.IService;
import$!{tableInfo.savePackageName}.entity.$!tableInfo.name;
##表注释(宏定义)
#tableComment("表服务接口")
publicinterface$!{tableName}extendsIService<$!tableInfo.name>{
}
dao文件
##导入宏定义
$!define
##设置表后缀(宏定义)
#setTableSuffix("Dao")
##保存文件(宏定义)
#save("/dao","Dao.java")
##包路径(宏定义)
#setPackageSuffix("dao")
importcom.baomidou.mybatisplus.core.mapper.BaseMapper;
import$!{tableInfo.savePackageName}.entity.$!tableInfo.name;
##表注释(宏定义)
#tableComment("表数据库访问层")
publicinterface$!{tableName}extendsBaseMapper<$!tableInfo.name>{
}
entity文件
##导入宏定义
$!define
##保存文件(宏定义)
#save("/entity",".java")
##包路径(宏定义)
#setPackageSuffix("entity")
##自动导入包(全局变量)
$!autoImport
importcom.baomidou.mybatisplus.extension.activerecord.Model;
importjava.io.Serializable;
importlombok.Data;
importcom.baomidou.mybatisplus.annotation.IdType;
importcom.baomidou.mybatisplus.annotation.TableId;
##表注释(宏定义)
#tableComment("表实体类")
@Data
@SuppressWarnings("serial")
publicclass$!{tableInfo.name}extendsModel<$!{tableInfo.name}>{
@TableId(type=IdType.AUTO)
#foreach($columnin$tableInfo.fullColumn)
#if(${column.comment})/**${column.comment}*/#end
private$!{tool.getClsNameByFullName($column.type)}$!{column.name};
#end
###foreach($columnin$tableInfo.fullColumn)
###getSetMethod($column)
###end
#foreach($columnin$tableInfo.pkColumn)
/**
*获取主键值
*
*@return主键值
*/
@Override
protectedSerializablepkVal(){
returnthis.$!column.name;
}
#break
#end
}
GlobalConfig配置项GroupName:Default
下面的文件都是GroupName为Default的
mybatisSupport文件
##针对Mybatis进行支持,主要用于生成xml文件
#foreach($columnin$tableInfo.fullColumn)
##储存列类型
$tool.call($column.ext.put("sqlType",$tool.getField($column.obj.dataType,"typeName")))
#if($tool.newHashSet("java.lang.String").contains($column.type))
#set($jdbcType="VARCHAR")
#elseif($tool.newHashSet("java.lang.Boolean","boolean").contains($column.type))
#set($jdbcType="BOOLEAN")
#elseif($tool.newHashSet("java.lang.Byte","byte").contains($column.type))
#set($jdbcType="BYTE")
#elseif($tool.newHashSet("java.lang.Integer","int","java.lang.Short","short").contains($column.type))
#set($jdbcType="INTEGER")
#elseif($tool.newHashSet("java.lang.Long","long").contains($column.type))
#set($jdbcType="INTEGER")
#elseif($tool.newHashSet("java.lang.Float","float","java.lang.Double","double").contains($column.type))
#set($jdbcType="NUMERIC")
#elseif($tool.newHashSet("java.util.Date","java.sql.Timestamp","java.time.Instant","java.time.LocalDateTime","java.time.OffsetDateTime","java.time.ZonedDateTime").contains($column.type))
#set($jdbcType="TIMESTAMP")
#elseif($tool.newHashSet("java.sql.Date","java.time.LocalDate").contains($column.type))
#set($jdbcType="TIMESTAMP")
#else
##其他类型
#set($jdbcType="OTHER")
#end
$tool.call($column.ext.put("jdbcType",$jdbcType))
#end
##定义宏,查询所有列
#macro(allSqlColumn)#foreach($columnin$tableInfo.fullColumn)$column.obj.name#if($velocityHasNext),#end#end#end
autoImport文件
##自动导入包(仅导入实体属性需要的包,通常用于实体类)
#foreach($importin$importList)
import$!import;
#end
define文件
##(Velocity宏定义)
##去掉表的t_前缀
$!tableInfo.setName($tool.getClassName($tableInfo.obj.name.replaceFirst("t_","")))
##定义设置表名后缀的宏定义,调用方式:#setTableSuffix("Test")
#macro(setTableSuffix$suffix)
#set($tableName=$!tool.append($tableInfo.name,$suffix))
#end
##定义设置包名后缀的宏定义,调用方式:#setPackageSuffix("Test")
#macro(setPackageSuffix$suffix)
#if($suffix!="")package#end#if($tableInfo.savePackageName!="")$!{tableInfo.savePackageName}.#{end}$!suffix;
#end
##定义直接保存路径与文件名简化的宏定义,调用方式:#save("/entity",".java")
#macro(save$path$fileName)
$!callback.setSavePath($tool.append($tableInfo.savePath,$path))
$!callback.setFileName($tool.append($tableInfo.name,$fileName))
#end
##定义表注释的宏定义,调用方式:#tableComment("注释信息")
#macro(tableComment$desc)
/**
*$!{tableInfo.comment}($!{tableInfo.name})$desc
*
*@author$!author
*@since$!time.currTime()
*/
#end
##定义GET,SET方法的宏定义,调用方式:#getSetMethod($column)
#macro(getSetMethod$column)
public$!{tool.getClsNameByFullName($column.type)}get$!{tool.firstUpperCase($column.name)}(){
return$!{column.name};
}
publicvoidset$!{tool.firstUpperCase($column.name)}($!{tool.getClsNameByFullName($column.type)}$!{column.name}){
this.$!{column.name}=$!{column.name};
}
#end
init文件
##初始化区域
##去掉表的t_前缀
$!tableInfo.setName($tool.getClassName($tableInfo.obj.name.replaceFirst("t_","")))
##参考阿里巴巴开发手册,POJO类中布尔类型的变量,都不要加is前缀,否则部分框架解析会引起序列化错误
#foreach($columnin$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($itemin$temp)
#set($newList=$tool.newArrayList())
#foreach($columnin$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($columnin$tableInfo.fullColumn)
#if(!$column.type.startsWith("java.lang."))
##带有反回值的方法调用时使用$tool.call来消除返回值
$tool.call($temp.add($column.type))
#end
#end
##覆盖
#set($importList=$temp)
到此这篇关于idea的easyCode的MybatisPlus模板的配置详解的文章就介绍到这了,更多相关ideaeasyCodeMybatisPlus配置内容请搜索毛票票以前的文章或继续浏览下面的相关文章希望大家以后多多支持毛票票!
声明:本文内容来源于网络,版权归原作者所有,内容由互联网用户自发贡献自行上传,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任。如果您发现有涉嫌版权的内容,欢迎发送邮件至:czq8825#qq.com(发邮件时,请将#更换为@)进行举报,并提供相关证据,一经查实,本站将立刻删除涉嫌侵权内容。