Commit 779b8978 by yuwei

项目初始化

parent 60477a04
......@@ -2,7 +2,6 @@ package cn.datax.common.base;
import com.baomidou.mybatisplus.annotation.*;
import com.fasterxml.jackson.annotation.JsonFormat;
import com.fasterxml.jackson.annotation.JsonIgnore;
import lombok.Data;
import java.io.Serializable;
......
......@@ -14,8 +14,6 @@ public class BaseQueryParams implements Serializable {
private Integer pageNum = 1;
// 分页条数
private Integer pageSize = 20;
// 显示字段
private List<String> columnList;
// 排序
private List<OrderItem> orderList;
// 数据权限
......
......@@ -8,7 +8,6 @@ import cn.datax.service.system.service.LogService;
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.core.toolkit.Wrappers;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiImplicitParam;
......
......@@ -10,7 +10,6 @@ import cn.datax.service.system.service.PostService;
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.core.toolkit.Wrappers;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiImplicitParam;
......
......@@ -8,10 +8,8 @@ import cn.datax.service.system.api.entity.RoleEntity;
import cn.datax.service.system.mapstruct.RoleMapper;
import cn.datax.service.system.service.RoleService;
import cn.hutool.core.util.StrUtil;
import com.alibaba.fastjson.JSON;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiImplicitParam;
......
......@@ -7,7 +7,6 @@ import cn.datax.service.system.api.entity.UserEntity;
import cn.datax.service.system.api.query.UserQuery;
import cn.datax.service.system.service.UserService;
import cn.hutool.core.collection.CollUtil;
import cn.hutool.core.util.ArrayUtil;
import cn.hutool.core.util.StrUtil;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
......@@ -27,9 +26,6 @@ public class TestController extends BaseController {
@GetMapping("/users/pageDataScope")
public R getUserPageDataScope(UserQuery userQuery) {
QueryWrapper<UserEntity> queryWrapper = new QueryWrapper<>();
if(CollUtil.isNotEmpty(userQuery.getColumnList())){
queryWrapper.select(ArrayUtil.toArray(userQuery.getColumnList(), String.class));
}
queryWrapper.like(StrUtil.isNotBlank(userQuery.getUsername()), "username", userQuery.getUsername());
queryWrapper.apply(StrUtil.isNotBlank(userQuery.getDeptId()), "(select dept_id from sys_user_dept where user_id = id) = {0}", userQuery.getDeptId());
if(CollUtil.isNotEmpty(userQuery.getOrderList())){
......
......@@ -11,7 +11,6 @@ import cn.datax.service.system.api.query.UserQuery;
import cn.datax.service.system.mapstruct.UserMapper;
import cn.datax.service.system.service.UserService;
import cn.hutool.core.collection.CollUtil;
import cn.hutool.core.util.ArrayUtil;
import cn.hutool.core.util.StrUtil;
import com.alibaba.fastjson.JSON;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
......@@ -65,9 +64,6 @@ public class UserController extends BaseController {
@GetMapping("/page")
public R getUserPage(UserQuery userQuery) {
QueryWrapper<UserEntity> queryWrapper = new QueryWrapper<>();
if(CollUtil.isNotEmpty(userQuery.getColumnList())){
queryWrapper.select(ArrayUtil.toArray(userQuery.getColumnList(), String.class));
}
queryWrapper.like(StrUtil.isNotBlank(userQuery.getUsername()), "username", userQuery.getUsername());
queryWrapper.apply(StrUtil.isNotBlank(userQuery.getDeptId()), "(select dept_id from sys_user_dept where user_id = id) = {0}", userQuery.getDeptId());
if(CollUtil.isNotEmpty(userQuery.getOrderList())){
......
......@@ -9,10 +9,8 @@ import com.baomidou.mybatisplus.generator.config.*;
import com.baomidou.mybatisplus.generator.config.po.TableInfo;
import com.baomidou.mybatisplus.generator.config.rules.NamingStrategy;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.io.File;
import java.util.*;
public class Generate {
......@@ -48,8 +46,8 @@ public class Generate {
// 数据源配置
DataSourceConfig dsc = new DataSourceConfig();
dsc.setUrl("jdbc:mysql://localhost:3306/data_cloud?useUnicode=true&useSSL=false&characterEncoding=utf8");
dsc.setDriverName("com.mysql.jdbc.Driver");
dsc.setUrl("jdbc:mysql://localhost:3306/data_cloud?useUnicode=true&characterEncoding=utf-8&zeroDateTimeBehavior=convertToNull&useSSL=true&serverTimezone=GMT%2B8");
dsc.setDriverName("com.mysql.cj.jdbc.Driver");
dsc.setUsername("root");
dsc.setPassword("1234@abcd");
mpg.setDataSource(dsc);
......@@ -66,6 +64,9 @@ public class Generate {
InjectionConfig cfg = new InjectionConfig() {
@Override
public void initMap() {
Map<String, Object> map = new HashMap<String, Object>();
map.put("PackageParent", "cn.datax.service");
this.setMap(map);
}
};
......@@ -77,7 +78,37 @@ public class Generate {
public String outputFile(TableInfo tableInfo) {
// 自定义输出文件名 , 如果你 Entity 设置了前后缀、此处注意 xml 的名称会跟着发生变化!!
return projectPath + "/src/main/resources/mapper/" + pc.getModuleName()
+ "/" + tableInfo.getEntityName() + "Mapper" + StringPool.DOT_XML;
+ "/" + tableInfo.getEntityName().replace("Entity", "Mapper") + StringPool.DOT_XML;
}
});
focList.add(new FileOutConfig("/templates/entity.java.vm") {
@Override
public String outputFile(TableInfo tableInfo) {
return projectPath + "/src/main/java/"+ "cn.datax.service".replace(".", File.separator) + File.separator + pc.getModuleName() + "/api/entity/" + tableInfo.getEntityName() + StringPool.DOT_JAVA;
}
});
focList.add(new FileOutConfig("/templates/mapstruct.java.vm") {
@Override
public String outputFile(TableInfo tableInfo) {
return projectPath + "/src/main/java/"+ "cn.datax.service".replace(".", File.separator) + File.separator + pc.getModuleName() + "/mapstruct/" + tableInfo.getEntityName().replace("Entity", "Mapper") + StringPool.DOT_JAVA;
}
});
focList.add(new FileOutConfig("/templates/dto.java.vm") {
@Override
public String outputFile(TableInfo tableInfo) {
return projectPath + "/src/main/java/"+ "cn.datax.service".replace(".", File.separator) + File.separator + pc.getModuleName() + "/api/dto/" + tableInfo.getEntityName().replace("Entity", "Dto") + StringPool.DOT_JAVA;
}
});
focList.add(new FileOutConfig("/templates/vo.java.vm") {
@Override
public String outputFile(TableInfo tableInfo) {
return projectPath + "/src/main/java/"+ "cn.datax.service".replace(".", File.separator) + File.separator + pc.getModuleName() + "/api/vo/" + tableInfo.getEntityName().replace("Entity", "Vo") + StringPool.DOT_JAVA;
}
});
focList.add(new FileOutConfig("/templates/query.java.vm") {
@Override
public String outputFile(TableInfo tableInfo) {
return projectPath + "/src/main/java/"+ "cn.datax.service".replace(".", File.separator) + File.separator + pc.getModuleName() + "/api/query/" + tableInfo.getEntityName().replace("Entity", "Query") + StringPool.DOT_JAVA;
}
});
/*
......@@ -98,7 +129,7 @@ public class Generate {
// 配置自定义输出模板
//指定自定义模板路径,注意不要带上.ftl/.vm, 会根据使用的模板引擎自动识别
templateConfig.setEntity("templates/entity.java");
templateConfig.setEntity(null);
templateConfig.setController("templates/controller.java");
templateConfig.setService("templates/service.java");
templateConfig.setServiceImpl("templates/serviceImpl.java");
......@@ -147,7 +178,7 @@ public class Generate {
// 策略配置
StrategyConfig strategyConfig = getStrategyConfig(tableNames);
//自定义配置
InjectionConfig injectionConfig = getInjectionConfig();
InjectionConfig injectionConfig = getInjectionConfig(moduleName, parentName);
//配置模板
TemplateConfig templateConfig = getTemplateConfig();
//自动生成
......@@ -182,12 +213,12 @@ public class Generate {
*
* @return templateConfig
*/
private InjectionConfig getInjectionConfig() {
private InjectionConfig getInjectionConfig(String moduleName, String parentName) {
InjectionConfig cfg = new InjectionConfig() {
@Override
public void initMap() {
Map<String, Object> map = new HashMap<String, Object>();
map.put("abc", this.getConfig().getGlobalConfig().getAuthor() + "-mp");
Map<String, Object> map = new HashMap<>();
map.put("PackageParent", parentName);
this.setMap(map);
}
};
......@@ -195,7 +226,37 @@ public class Generate {
focList.add(new FileOutConfig("/templates/mapper.xml.vm") {
@Override
public String outputFile(TableInfo tableInfo) {
return System.getProperty("user.home") + "/src/main/resources/mapper/" + tableInfo.getEntityName() + "Mapper" + StringPool.DOT_XML;
return System.getProperty("user.dir") + "/src/main/resources/mapper/" + tableInfo.getEntityName().replace("Entity", "Mapper") + StringPool.DOT_XML;
}
});
focList.add(new FileOutConfig("/templates/entity.java.vm") {
@Override
public String outputFile(TableInfo tableInfo) {
return System.getProperty("user.dir") + "/src/main/java/"+ parentName.replace(".", File.separator) + File.separator + moduleName + "/api/entity/" + tableInfo.getEntityName() + StringPool.DOT_JAVA;
}
});
focList.add(new FileOutConfig("/templates/mapstruct.java.vm") {
@Override
public String outputFile(TableInfo tableInfo) {
return System.getProperty("user.dir") + "/src/main/java/"+ parentName.replace(".", File.separator) + File.separator + moduleName + "/mapstruct/" + tableInfo.getEntityName().replace("Entity", "Mapper") + StringPool.DOT_JAVA;
}
});
focList.add(new FileOutConfig("/templates/dto.java.vm") {
@Override
public String outputFile(TableInfo tableInfo) {
return System.getProperty("user.dir") + "/src/main/java/"+ parentName.replace(".", File.separator) + File.separator + moduleName + "/api/dto/" + tableInfo.getEntityName().replace("Entity", "Dto") + StringPool.DOT_JAVA;
}
});
focList.add(new FileOutConfig("/templates/vo.java.vm") {
@Override
public String outputFile(TableInfo tableInfo) {
return System.getProperty("user.dir") + "/src/main/java/"+ parentName.replace(".", File.separator) + File.separator + moduleName + "/api/vo/" + tableInfo.getEntityName().replace("Entity", "Vo") + StringPool.DOT_JAVA;
}
});
focList.add(new FileOutConfig("/templates/query.java.vm") {
@Override
public String outputFile(TableInfo tableInfo) {
return System.getProperty("user.dir") + "/src/main/java/"+ parentName.replace(".", File.separator) + File.separator + moduleName + "/api/query/" + tableInfo.getEntityName().replace("Entity", "Query") + StringPool.DOT_JAVA;
}
});
cfg.setFileOutConfigList(focList);
......@@ -209,7 +270,7 @@ public class Generate {
*/
private TemplateConfig getTemplateConfig() {
return new TemplateConfig()
.setEntity("templates/entity.java")
.setEntity(null)
.setController("templates/controller.java")
.setService("templates/service.java")
.setServiceImpl("templates/serviceImpl.java")
......@@ -259,7 +320,7 @@ public class Generate {
//指定生成的主键的ID类型
.setIdType(IdType.ID_WORKER_STR)
//设置输出路径
.setOutputDir(System.getProperty("user.home") + "/src/main/java/")
.setOutputDir(System.getProperty("user.dir") + "/src/main/java/")
.setEntityName("%sEntity")
.setMapperName("%sDao")
.setXmlName("%sMapper")
......
package ${package.Controller};
import cn.datax.common.core.R;
import cn.datax.common.validate.ValidateGroupForSave;
import cn.datax.common.validate.ValidateGroupForUpdate;
import ${cfg.PackageParent}#if(${package.ModuleName}).${package.ModuleName}#end.api.dto.${className}Dto;
import ${cfg.PackageParent}#if(${package.ModuleName}).${package.ModuleName}#end.api.entity.${entity};
import ${cfg.PackageParent}#if(${package.ModuleName}).${package.ModuleName}#end.api.query.${className}Query;
import ${cfg.PackageParent}#if(${package.ModuleName}).${package.ModuleName}#end.mapstruct.${className}Mapper;
import ${package.Service}.${table.serviceName};
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 io.swagger.annotations.Api;
import io.swagger.annotations.ApiImplicitParam;
import io.swagger.annotations.ApiImplicitParams;
import io.swagger.annotations.ApiOperation;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.*;
import org.springframework.web.bind.annotation.RequestMapping;
#if(${restControllerStyle})
import org.springframework.web.bind.annotation.RestController;
#else
import org.springframework.stereotype.Controller;
#end
#if(${superControllerClassPackage})
import ${superControllerClassPackage};
#end
......@@ -20,22 +33,95 @@ import ${superControllerClassPackage};
* @author ${author}
* @since ${date}
*/
#if(${restControllerStyle})
@RestController
#if(${table.comment})
@Api(tags = {"${table.comment}"})
#else
@Controller
@Api(tags = {"${className}"})
#end
@RequestMapping("#if(${package.ModuleName})/${package.ModuleName}#end/#if(${controllerMappingHyphenStyle})${controllerMappingHyphen}#else${table.entityPath}#end")
#if(${kotlin})
class ${table.controllerName}#if(${superControllerClass}) : ${superControllerClass}()#end
#else
@RestController
@RequestMapping("#if(${package.ModuleName})/${package.ModuleName}#end/${classNameLower}")
#if(${superControllerClass})
public class ${table.controllerName} extends ${superControllerClass} {
#else
public class ${table.controllerName} {
#end
}
@Autowired
private ${table.serviceName} ${classNameLower}Service;
#end
\ No newline at end of file
@Autowired
private ${className}Mapper ${classNameLower}Mapper;
/**
* 通过ID查询信息
*
* @param id
* @return
*/
@ApiOperation(value = "获取详细信息", notes = "根据url的id来获取详细信息")
@ApiImplicitParam(name = "id", value = "ID", required = true, dataType = "String", paramType = "path")
@GetMapping("/{id}")
public R get${className}ById(@PathVariable String id) {
${entity} ${classNameLower}Entity = ${classNameLower}Service.getById(id);
return R.ok().setData(${classNameLower}Mapper.toVO(${classNameLower}Entity));
}
/**
* 分页查询信息
*
* @param ${classNameLower}Query
* @return
*/
@ApiOperation(value = "分页查询", notes = "")
@ApiImplicitParams({
@ApiImplicitParam(name = "${classNameLower}Query", value = "查询实体${classNameLower}Query", required = true, dataTypeClass = ${className}Query.class)
})
@GetMapping("/page")
public R getRolePage(${className}Query ${classNameLower}Query) {
QueryWrapper<${entity}> queryWrapper = new QueryWrapper<>();
IPage<${entity}> page = ${classNameLower}Service.page(new Page<>(${classNameLower}Query.getPageNum(), ${classNameLower}Query.getPageSize()), queryWrapper);
return R.ok().setData(page);
}
/**
* 添加
* @param ${classNameLower}
* @return
*/
@ApiOperation(value = "添加信息", notes = "根据${classNameLower}对象添加信息")
@ApiImplicitParam(name = "${classNameLower}", value = "详细实体${classNameLower}", required = true, dataType = "${className}Dto")
@PostMapping()
public R save${className}(@RequestBody @Validated({ValidateGroupForSave.class}) ${className}Dto ${classNameLower}) {
${classNameLower}Service.save${className}(${classNameLower});
return R.ok();
}
/**
* 修改
* @param ${classNameLower}
* @return
*/
@ApiOperation(value = "修改信息", notes = "根据url的id来指定修改对象,并根据传过来的信息来修改详细信息")
@ApiImplicitParams({
@ApiImplicitParam(name = "id", value = "ID", required = true, dataType = "String", paramType = "path"),
@ApiImplicitParam(name = "${classNameLower}", value = "详细实体${classNameLower}", required = true, dataType = "${className}Dto")
})
@PutMapping("/{id}")
public R update${className}(@PathVariable String id, @RequestBody @Validated({ValidateGroupForUpdate.class}) ${className}Dto ${classNameLower}) {
${classNameLower}Service.update${className}(${classNameLower});
return R.ok();
}
/**
* 删除
* @param id
* @return
*/
@ApiOperation(value = "删除", notes = "根据url的id来指定删除对象")
@ApiImplicitParam(name = "id", value = "ID", required = true, dataType = "String", paramType = "path")
@DeleteMapping("/{id}")
public R delete${className}ById(@PathVariable String id) {
${classNameLower}Service.delete${className}ById(id);
return R.ok();
}
}
package ${package.Controller};
import org.springframework.web.bind.annotation.RequestMapping;
#if(${restControllerStyle})
import org.springframework.web.bind.annotation.RestController;
#else
import org.springframework.stereotype.Controller;
#end
#if(${superControllerClassPackage})
import ${superControllerClassPackage};
#end
/**
* <p>
* $!{table.comment} 前端控制器
* </p>
*
* @author ${author}
* @since ${date}
*/
#if(${restControllerStyle})
@RestController
#else
@Controller
#end
@RequestMapping("#if(${package.ModuleName})/${package.ModuleName}#end/#if(${controllerMappingHyphenStyle})${controllerMappingHyphen}#else${table.entityPath}#end")
#if(${kotlin})
class ${table.controllerName}#if(${superControllerClass}) : ${superControllerClass}()#end
#else
#if(${superControllerClass})
public class ${table.controllerName} extends ${superControllerClass} {
#else
public class ${table.controllerName} {
#end
}
#end
\ No newline at end of file
package ${cfg.PackageParent}#if(${package.ModuleName}).${package.ModuleName}#end.api.dto;
import cn.datax.common.validate.ValidateGroupForSave;
import cn.datax.common.validate.ValidateGroupForUpdate;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import javax.validation.constraints.NotBlank;
import java.io.Serializable;
/**
* <p>
* $!{table.comment} 实体DTO
* </p>
*
* @author ${author}
* @since ${date}
*/
@ApiModel(value = "$!{table.comment}Model")
@Data
public class ${className}Dto implements Serializable {
private static final long serialVersionUID=1L;
@ApiModelProperty(value = "主键ID")
@NotBlank(message = "主键ID不能为空", groups = {ValidateGroupForUpdate.class})
private String id;
## ---------- BEGIN 字段循环遍历 ----------
#foreach($field in ${table.fields})
@ApiModelProperty(value = "${field.comment}")
private ${field.propertyType} ${field.propertyName};
#end
## ---------- END 字段循环遍历 ----------
}
package ${package.Entity};
package ${cfg.PackageParent}#if(${package.ModuleName}).${package.ModuleName}#end.api.entity;
#foreach($pkg in ${table.importPackages})
import ${pkg};
......
package ${package.Entity};
#foreach($pkg in ${table.importPackages})
import ${pkg};
#end
#if(${swagger2})
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
#end
#if(${entityLombokModel})
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.experimental.Accessors;
#end
/**
* <p>
* $!{table.comment}
* </p>
*
* @author ${author}
* @since ${date}
*/
#if(${entityLombokModel})
@Data
#if(${superEntityClass})
@EqualsAndHashCode(callSuper = true)
#else
@EqualsAndHashCode(callSuper = false)
#end
@Accessors(chain = true)
#end
#if(${table.convert})
@TableName("${table.name}")
#end
#if(${swagger2})
@ApiModel(value="${entity}对象", description="$!{table.comment}")
#end
#if(${superEntityClass})
public class ${entity} extends ${superEntityClass}#if(${activeRecord})<${entity}>#end {
#elseif(${activeRecord})
public class ${entity} extends Model<${entity}> {
#else
public class ${entity} implements Serializable {
#end
#if(${entitySerialVersionUID})
private static final long serialVersionUID=1L;
#end
## ---------- BEGIN 字段循环遍历 ----------
#foreach($field in ${table.fields})
#if(${field.keyFlag})
#set($keyPropertyName=${field.propertyName})
#end
#if("$!field.comment" != "")
#if(${swagger2})
@ApiModelProperty(value = "${field.comment}")
#else
/**
* ${field.comment}
*/
#end
#end
#if(${field.keyFlag})
## 主键
#if(${field.keyIdentityFlag})
@TableId(value = "${field.name}", type = IdType.AUTO)
#elseif(!$null.isNull(${idType}) && "$!idType" != "")
@TableId(value = "${field.name}", type = IdType.${idType})
#elseif(${field.convert})
@TableId("${field.name}")
#end
## 普通字段
#elseif(${field.fill})
## ----- 存在字段填充设置 -----
#if(${field.convert})
@TableField(value = "${field.name}", fill = FieldFill.${field.fill})
#else
@TableField(fill = FieldFill.${field.fill})
#end
#elseif(${field.convert})
@TableField("${field.name}")
#end
## 乐观锁注解
#if(${versionFieldName}==${field.name})
@Version
#end
## 逻辑删除注解
#if(${logicDeleteFieldName}==${field.name})
@TableLogic
#end
private ${field.propertyType} ${field.propertyName};
#end
## ---------- END 字段循环遍历 ----------
#if(!${entityLombokModel})
#foreach($field in ${table.fields})
#if(${field.propertyType.equals("boolean")})
#set($getprefix="is")
#else
#set($getprefix="get")
#end
public ${field.propertyType} ${getprefix}${field.capitalName}() {
return ${field.propertyName};
}
#if(${entityBuilderModel})
public ${entity} set${field.capitalName}(${field.propertyType} ${field.propertyName}) {
#else
public void set${field.capitalName}(${field.propertyType} ${field.propertyName}) {
#end
this.${field.propertyName} = ${field.propertyName};
#if(${entityBuilderModel})
return this;
#end
}
#end
#end
#if(${entityColumnConstant})
#foreach($field in ${table.fields})
public static final String ${field.name.toUpperCase()} = "${field.name}";
#end
#end
#if(${activeRecord})
@Override
protected Serializable pkVal() {
#if(${keyPropertyName})
return this.${keyPropertyName};
#else
return null;
#end
}
#end
#if(!${entityLombokModel})
@Override
public String toString() {
return "${entity}{" +
#foreach($field in ${table.fields})
#if($!{foreach.index}==0)
"${field.propertyName}=" + ${field.propertyName} +
#else
", ${field.propertyName}=" + ${field.propertyName} +
#end
#end
"}";
}
#end
}
package ${package.Mapper};
import ${package.Entity}.${entity};
import ${superMapperClassPackage};
import ${cfg.PackageParent}#if(${package.ModuleName}).${package.ModuleName}#end.api.entity.${entity};
import org.apache.ibatis.annotations.Mapper;
/**
* <p>
......@@ -11,10 +12,7 @@ import ${superMapperClassPackage};
* @author ${author}
* @since ${date}
*/
#if(${kotlin})
interface ${table.mapperName} : ${superMapperClass}<${entity}>
#else
@Mapper
public interface ${table.mapperName} extends ${superMapperClass}<${entity}> {
}
#end
package ${package.Mapper};
import ${package.Entity}.${entity};
import ${superMapperClassPackage};
/**
* <p>
* $!{table.comment} Mapper 接口
* </p>
*
* @author ${author}
* @since ${date}
*/
#if(${kotlin})
interface ${table.mapperName} : ${superMapperClass}<${entity}>
#else
public interface ${table.mapperName} extends ${superMapperClass}<${entity}> {
}
#end
......@@ -9,7 +9,7 @@
#end
#if(${baseResultMap})
<!-- 通用查询映射结果 -->
<resultMap id="BaseResultMap" type="${package.Entity}.${entity}">
<resultMap id="BaseResultMap" type="${cfg.PackageParent}#if(${package.ModuleName}).${package.ModuleName}#end.api.entity.${entity}">
#foreach($field in ${table.fields})
#if(${field.keyFlag})##生成主键排在第一位
<id column="${field.name}" property="${field.propertyName}" />
......
<?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="${package.Mapper}.${table.mapperName}">
#if(${enableCache})
<!-- 开启二级缓存 -->
<cache type="org.mybatis.caches.ehcache.LoggingEhcache"/>
#end
#if(${baseResultMap})
<!-- 通用查询映射结果 -->
<resultMap id="BaseResultMap" type="${package.Entity}.${entity}">
#foreach($field in ${table.fields})
#if(${field.keyFlag})##生成主键排在第一位
<id column="${field.name}" property="${field.propertyName}" />
#end
#end
#foreach($field in ${table.commonFields})##生成公共字段
<result column="${field.name}" property="${field.propertyName}" />
#end
#foreach($field in ${table.fields})
#if(!${field.keyFlag})##生成普通字段
<result column="${field.name}" property="${field.propertyName}" />
#end
#end
</resultMap>
#end
#if(${baseColumnList})
<!-- 通用查询结果列 -->
<sql id="Base_Column_List">
#foreach($field in ${table.commonFields})
${field.name},
#end
${table.fieldNames}
</sql>
#end
</mapper>
package ${cfg.PackageParent}#if(${package.ModuleName}).${package.ModuleName}#end.mapstruct;
import cn.datax.common.mapstruct.EntityMapper;
import ${cfg.PackageParent}#if(${package.ModuleName}).${package.ModuleName}#end.api.dto.${className}Dto;
import ${cfg.PackageParent}#if(${package.ModuleName}).${package.ModuleName}#end.api.entity.${entity};
import ${cfg.PackageParent}#if(${package.ModuleName}).${package.ModuleName}#end.api.vo.${className}Vo;
import org.mapstruct.Mapper;
/**
* <p>
* $!{table.comment} Mapper 实体映射
* </p>
*
* @author ${author}
* @since ${date}
*/
@Mapper(componentModel = "spring")
public interface ${table.mapperName} extends EntityMapper<${className}Dto, ${entity}, ${className}Vo> {
}
package ${cfg.PackageParent}#if(${package.ModuleName}).${package.ModuleName}#end.api.query;
import cn.datax.common.base.BaseQueryParams;
import lombok.Data;
import lombok.EqualsAndHashCode;
/**
* <p>
* $!{table.comment} 查询实体
* </p>
*
* @author ${author}
* @since ${date}
*/
@Data
@EqualsAndHashCode(callSuper = true)
public class ${className}Query extends BaseQueryParams {
private static final long serialVersionUID=1L;
}
package ${package.Service};
import ${package.Entity}.${entity};
import ${cfg.PackageParent}#if(${package.ModuleName}).${package.ModuleName}#end.api.dto.${className}Dto;
import ${superServiceClassPackage};
/**
......@@ -11,10 +12,11 @@ import ${superServiceClassPackage};
* @author ${author}
* @since ${date}
*/
#if(${kotlin})
interface ${table.serviceName} : ${superServiceClass}<${entity}>
#else
public interface ${table.serviceName} extends ${superServiceClass}<${entity}> {
void save${className}(${className}Dto ${classNameLower});
void update${className}(${className}Dto ${classNameLower});
void delete${className}ById(String id);
}
#end
package ${package.Service};
import ${package.Entity}.${entity};
import ${superServiceClassPackage};
/**
* <p>
* $!{table.comment} 服务类
* </p>
*
* @author ${author}
* @since ${date}
*/
#if(${kotlin})
interface ${table.serviceName} : ${superServiceClass}<${entity}>
#else
public interface ${table.serviceName} extends ${superServiceClass}<${entity}> {
}
#end
......@@ -3,8 +3,12 @@ package ${package.ServiceImpl};
import ${package.Entity}.${entity};
import ${package.Mapper}.${table.mapperName};
import ${package.Service}.${table.serviceName};
import ${cfg.PackageParent}#if(${package.ModuleName}).${package.ModuleName}#end.mapstruct.${className}Mapper;
import ${cfg.PackageParent}#if(${package.ModuleName}).${package.ModuleName}#end.dao.${className}Dao;
import ${superServiceImplClassPackage};
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Propagation;
import org.springframework.transaction.annotation.Transactional;
/**
* <p>
......@@ -15,12 +19,32 @@ import org.springframework.stereotype.Service;
* @since ${date}
*/
@Service
#if(${kotlin})
open class ${table.serviceImplName} : ${superServiceImplClass}<${table.mapperName}, ${entity}>(), ${table.serviceName} {
}
#else
@Transactional(propagation = Propagation.SUPPORTS, readOnly = true, rollbackFor = Exception.class)
public class ${table.serviceImplName} extends ${superServiceImplClass}<${table.mapperName}, ${entity}> implements ${table.serviceName} {
@Autowired
private ${className}Dao ${classNameLower}Dao;
@Autowired
private ${className}Mapper ${classNameLower}Mapper;
@Override
@Transactional(rollbackFor = Exception.class)
public void save${className}(${className}Dto ${classNameLower}Dto) {
${entity} ${classNameLower} = ${classNameLower}Mapper.toEntity(${classNameLower}Dto);
${classNameLower}Dao.insert(${classNameLower});
}
@Override
@Transactional(rollbackFor = Exception.class)
public void update${className}(${className}Dto ${classNameLower}Dto) {
${entity} ${classNameLower} = ${classNameLower}Mapper.toEntity(${classNameLower}Dto);
${classNameLower}Dao.updateById(${classNameLower});
}
@Override
@Transactional(rollbackFor = Exception.class)
public void delete${className}ById(String id) {
${classNameLower}Dao.deleteById(id);
}
}
#end
package ${package.ServiceImpl};
import ${package.Entity}.${entity};
import ${package.Mapper}.${table.mapperName};
import ${package.Service}.${table.serviceName};
import ${superServiceImplClassPackage};
import org.springframework.stereotype.Service;
/**
* <p>
* $!{table.comment} 服务实现类
* </p>
*
* @author ${author}
* @since ${date}
*/
@Service
#if(${kotlin})
open class ${table.serviceImplName} : ${superServiceImplClass}<${table.mapperName}, ${entity}>(), ${table.serviceName} {
}
#else
public class ${table.serviceImplName} extends ${superServiceImplClass}<${table.mapperName}, ${entity}> implements ${table.serviceName} {
}
#end
package ${cfg.PackageParent}#if(${package.ModuleName}).${package.ModuleName}#end.api.vo;
import lombok.Data;
import java.io.Serializable;
import java.time.LocalDateTime;
/**
* <p>
* $!{table.comment} 实体VO
* </p>
*
* @author ${author}
* @since ${date}
*/
@Data
public class ${className}Vo implements Serializable {
private static final long serialVersionUID=1L;
private String id;
private Integer status;
private LocalDateTime createTime;
## ---------- BEGIN 字段循环遍历 ----------
#foreach($field in ${table.fields})
private ${field.propertyType} ${field.propertyName};
#end
## ---------- END 字段循环遍历 ----------
}
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment