Tips:模板里存储文件及生成文件的位置需要修改成自己的目录结构。我的项目架构是SpringBoot+Mybatis-Plus+Redis+Shiro+Jwt,其中用到了MyBatis-Plus的CRUD以及条件构造器。
目录结构:
controller.java.vm:
##定义初始变量
#set($tableName = $tool.append($tableInfo.name.substring(1), "Controller"))
##设置回调
$!callback.setFileName($tool.append($tableName, ".java"))
$!callback.setSavePath($tool.append($tableInfo.savePath, "/admin/controller"))
##拿到主键
#if(!$tableInfo.pkColumn.isEmpty())
#set($pk = $tableInfo.pkColumn.get(0))
#end
#if($tableInfo.savePackageName)package $!{tableInfo.savePackageName}.#{end}admin.controller;
import ${tableInfo.savePackageName}.admin.service.${tableInfo.name.substring(1)}Service;
import com.vip.jwt.common.entity.R;
import ${tableInfo.savePackageName}.entity.${tableInfo.name.substring(1)};
import org.springframework.web.bind.annotation.*;
import javax.annotation.Resource;
import java.util.Map;
/**
* $!{tableInfo.comment} ${tableInfo.name.substring(1)}表 前端控制器
*
* @author $!author
* @since $!time.currTime()
*/
@RestController
@RequestMapping("/api/$tool.firstLowerCase($tableInfo.name.substring(1))")
public class ${tableName} {
@Resource
private ${tableInfo.name.substring(1)}Service $tool.firstLowerCase($tableInfo.name.substring(1))Service;
/**
* 新增单条数据
*
* @param ${tool.firstLowerCase($tableInfo.name.substring(1))}
* @return
*/
@PostMapping("/insert${tableInfo.name.substring(1)}")
public Object insert${tableInfo.name.substring(1)}(@RequestBody ${tableInfo.name.substring(1)} ${tool.firstLowerCase($tableInfo.name.substring(1))}) {
${tool.firstLowerCase($tableInfo.name.substring(1))}Service.save(${tool.firstLowerCase($tableInfo.name.substring(1))});
return R.ok();
}
/**
* 删除单条数据
*
* @param id
* @return
*/
@PostMapping("/delete${tableInfo.name.substring(1)}ById")
public Object delete${tableInfo.name.substring(1)}ById(@RequestParam("id") $!pk.shortType id) {
${tool.firstLowerCase($tableInfo.name.substring(1))}Service.removeById(id);
return R.ok();
}
/**
* 编辑单条数据
*
* @param ${tool.firstLowerCase($tableInfo.name.substring(1))}
* @return
*/
@PostMapping("/update${tableInfo.name.substring(1)}")
public Object update${tableInfo.name.substring(1)}(@RequestBody ${tableInfo.name.substring(1)} ${tool.firstLowerCase($tableInfo.name.substring(1))}) {
${tool.firstLowerCase($tableInfo.name.substring(1))}Service.updateById(${tool.firstLowerCase($tableInfo.name.substring(1))});
return R.ok();
}
/**
* 查询所有数据(分页)
*
* @param ${tool.firstLowerCase($tableInfo.name.substring(1))}
* @return
*/
@PostMapping("/list${tableInfo.name.substring(1)}")
public Object list${tableInfo.name.substring(1)}(@RequestBody ${tableInfo.name.substring(1)} ${tool.firstLowerCase($tableInfo.name.substring(1))}) {
Map<String, Object> ${tool.firstLowerCase($tableInfo.name.substring(1))}Data = ${tool.firstLowerCase($tableInfo.name.substring(1))}Service.findByContent(${tool.firstLowerCase($tableInfo.name.substring(1))});
return R.ok().data("data", ${tool.firstLowerCase($tableInfo.name.substring(1))}Data);
}
}
service.java.vm:
##定义初始变量
#set($tableName = $tool.append($tableInfo.name.substring(1), "Service"))
##设置回调
$!callback.setFileName($tool.append($tableName, ".java"))
$!callback.setSavePath($tool.append($tableInfo.savePath, "/admin/service"))
##拿到主键
#if(!$tableInfo.pkColumn.isEmpty())
#set($pk = $tableInfo.pkColumn.get(0))
#end
#if($tableInfo.savePackageName)package $!{tableInfo.savePackageName}.#{end}admin.service;
import com.baomidou.mybatisplus.extension.service.IService;
import ${tableInfo.savePackageName}.entity.${tableInfo.name.substring(1)};
import java.util.Map;
/**
* $!{tableInfo.comment} ${tableInfo.name}表 服务类
*
* @author $!author
* @since $!time.currTime()
*/
public interface ${tableName} extends IService<${tableInfo.name.substring(1)}> {
Map<String, Object> findByContent(${tableInfo.name.substring(1)} ${tool.firstLowerCase($tableInfo.name.substring(1))});
}
serviceImpl.java.vm:
##定义初始变量
#set($tableName = $tool.append($tableInfo.name.substring(1), "ServiceImpl"))
##设置回调
$!callback.setFileName($tool.append($tableName, ".java"))
$!callback.setSavePath($tool.append($tableInfo.savePath, "/admin/service/impl"))
##拿到主键
#if(!$tableInfo.pkColumn.isEmpty())
#set($pk = $tableInfo.pkColumn.get(0))
#end
#if($tableInfo.savePackageName)package $!{tableInfo.savePackageName}.#{end}admin.service.impl;
import cn.hutool.core.util.StrUtil;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import ${tableInfo.savePackageName}.admin.service.${tableInfo.name.substring(1)}Service;
import ${tableInfo.savePackageName}.entity.${tableInfo.name.substring(1)};
import ${tableInfo.savePackageName}.mapper.${tableInfo.name.substring(1)}Mapper;
import org.springframework.stereotype.Service;
import javax.annotation.Resource;
import java.util.HashMap;
import java.util.Map;
import java.util.List;
/**
* $!{tableInfo.comment} ${tableInfo.name.substring(1)}表 服务实现类
*
* @author $!author
* @since $!time.currTime()
*/
@Service
public class ${tableName} extends ServiceImpl<${tableInfo.name.substring(1)}Mapper, ${tableInfo.name.substring(1)}> implements ${tableInfo.name.substring(1)}Service {
@Resource
private ${tableInfo.name.substring(1)}Mapper $tool.firstLowerCase(${tableInfo.name.substring(1)})Mapper;
@Override
public Map<String, Object> findByContent(${tableInfo.name.substring(1)} ${tool.firstLowerCase($tableInfo.name.substring(1))}) {
Integer PageSize = ${tool.firstLowerCase($tableInfo.name.substring(1))}.getPageSize();
Integer CurrentPage = ${tool.firstLowerCase($tableInfo.name.substring(1))}.getCurrentPage();
String tittle = ${tool.firstLowerCase($tableInfo.name.substring(1))}.getTittle();
QueryWrapper<${tableInfo.name.substring(1)}> wrapper = new QueryWrapper<>();
wrapper.orderByDesc("create_time");
if (StrUtil.isNotEmpty(tittle)) {
wrapper.like("tittle", tittle);
}
// 创建分页对象
Page<${tableInfo.name.substring(1)}> page = new Page<>(CurrentPage, PageSize);
// 执行查询
IPage<${tableInfo.name.substring(1)}> resultPage = ${tool.firstLowerCase($tableInfo.name.substring(1))}Mapper.selectPage(page, wrapper);
// 获取查询结果
List<${tableInfo.name.substring(1)}> records = resultPage.getRecords();
long total = resultPage.getTotal();
// 封装查询结果
Map<String, Object> resultMap = new HashMap<>();
resultMap.put("records", records);
resultMap.put("total", total);
return resultMap;
}
}
mapper.java.vm:
##定义初始变量
#set($tableName = $tool.append($tableInfo.name.substring(1), "Mapper"))
##设置回调
$!callback.setFileName($tool.append($tableName, ".java"))
$!callback.setSavePath($tool.append($tableInfo.savePath, "/mapper"))
##拿到主键
#if(!$tableInfo.pkColumn.isEmpty())
#set($pk = $tableInfo.pkColumn.get(0))
#end
#if($tableInfo.savePackageName)package $!{tableInfo.savePackageName}.#{end}mapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import ${tableInfo.savePackageName}.entity.${tableInfo.name.substring(1)};
/**
* $!{tableInfo.comment} ${tableInfo.name.substring(1)}表 Mapper 接口
*
* @author $!author
* @since $!time.currTime()
*/
public interface ${tableName} extends BaseMapper<${tableInfo.name.substring(1)}> {
}
mapper.xml.vm:
##引入mybatis支持
$!{mybatisSupport.vm}
##设置保存名称与保存位置
$!callback.setFileName($tool.append($!{tableInfo.name.substring(1)}, "Mapper.xml"))
$!callback.setSavePath($tool.append($modulePath, "/src/main/resources/mapper"))
##拿到主键
#if(!$tableInfo.pkColumn.isEmpty())
#set($pk = $tableInfo.pkColumn.get(0))
#end
<?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}.mapper.${tableInfo.name.substring(1)}Mapper">
</mapper>
entity.java.vm:
##引入宏定义
$!{define.vm}
##设置回调
$!callback.setFileName($tool.append($tableInfo.name.substring(1), ".java"))
$!callback.setSavePath($tool.append($tableInfo.savePath, "/entity"))
##使用宏定义设置包后缀
#setPackageSuffix("entity")
import com.baomidou.mybatisplus.annotation.TableName;
##使用全局变量实现默认包导入
$!{autoImport.vm}
import java.io.Serializable;
import lombok.Data;
import lombok.EqualsAndHashCode;
/**
* $!{tableInfo.comment} $!{tableInfo.name.substring(1)}表 实体类
*
* @author $!author
* @since $!time.currTime()
*/
@Data
@EqualsAndHashCode(callSuper = false)
@TableName("$!{tableInfo.obj.name}")
public class $!{tableInfo.name.substring(1)} extends BaseEntity implements Serializable {
private static final long serialVersionUID = $!tool.serial();
#foreach($column in $tableInfo.fullColumn)
#if(${column.comment})/**
* ${column.comment}
*/#end
private $!{tool.getClsNameByFullName($column.type)} $!{column.name};
#end
}