作用:自动生成模板代码和实体类,简化开发人员工作,降低错误率。
前置配置,去除指定前缀(“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)); } }