梳理代码生成器的配置
parent
54c98c3a44
commit
63962d557a
|
@ -0,0 +1,9 @@
|
||||||
|
package cn.iocoder.dashboard.framework.codegen.config;
|
||||||
|
|
||||||
|
import org.springframework.boot.context.properties.EnableConfigurationProperties;
|
||||||
|
import org.springframework.context.annotation.Configuration;
|
||||||
|
|
||||||
|
@Configuration
|
||||||
|
@EnableConfigurationProperties(CodegenProperties.class)
|
||||||
|
public class CodegenConfiguration {
|
||||||
|
}
|
|
@ -0,0 +1,28 @@
|
||||||
|
package cn.iocoder.dashboard.framework.codegen.config;
|
||||||
|
|
||||||
|
import lombok.Data;
|
||||||
|
import org.springframework.boot.context.properties.ConfigurationProperties;
|
||||||
|
import org.springframework.validation.annotation.Validated;
|
||||||
|
|
||||||
|
import javax.validation.constraints.NotEmpty;
|
||||||
|
import javax.validation.constraints.NotNull;
|
||||||
|
import java.util.Collection;
|
||||||
|
|
||||||
|
@ConfigurationProperties(prefix = "yudao.codegen")
|
||||||
|
@Validated
|
||||||
|
@Data
|
||||||
|
public class CodegenProperties {
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 生成的 Java 代码的基础包
|
||||||
|
*/
|
||||||
|
@NotNull(message = "Java 代码的基础包不能为空")
|
||||||
|
private String basePackage;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 数据库名数组
|
||||||
|
*/
|
||||||
|
@NotEmpty(message = "数据库不能为空")
|
||||||
|
private Collection<String> dbSchemas;
|
||||||
|
|
||||||
|
}
|
|
@ -0,0 +1,4 @@
|
||||||
|
/**
|
||||||
|
* 代码生成器
|
||||||
|
*/
|
||||||
|
package cn.iocoder.dashboard.framework.codegen;
|
|
@ -1,4 +1,4 @@
|
||||||
package cn.iocoder.dashboard.framework.datasource;
|
package cn.iocoder.dashboard.framework.datasource.config;
|
||||||
|
|
||||||
import org.springframework.context.annotation.Configuration;
|
import org.springframework.context.annotation.Configuration;
|
||||||
import org.springframework.transaction.annotation.EnableTransactionManagement;
|
import org.springframework.transaction.annotation.EnableTransactionManagement;
|
|
@ -13,7 +13,7 @@ import org.springframework.context.annotation.Configuration;
|
||||||
* @author 芋道源码
|
* @author 芋道源码
|
||||||
*/
|
*/
|
||||||
@Configuration
|
@Configuration
|
||||||
@MapperScan(value = "cn.iocoder.dashboard", annotationClass = Mapper.class)
|
@MapperScan(value = "${yudao.info.base-package}", annotationClass = Mapper.class)
|
||||||
public class MybatisConfiguration {
|
public class MybatisConfiguration {
|
||||||
|
|
||||||
@Bean
|
@Bean
|
||||||
|
|
|
@ -104,4 +104,10 @@ public class QueryWrapperX<T> extends QueryWrapper<T> {
|
||||||
return this;
|
return this;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public QueryWrapperX<T> in(String column, Collection<?> coll) {
|
||||||
|
super.in(column, coll);
|
||||||
|
return this;
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -9,13 +9,16 @@ import cn.iocoder.dashboard.modules.tool.controller.codegen.vo.ToolCodegenPrevie
|
||||||
import cn.iocoder.dashboard.modules.tool.controller.codegen.vo.ToolCodegenUpdateReqVO;
|
import cn.iocoder.dashboard.modules.tool.controller.codegen.vo.ToolCodegenUpdateReqVO;
|
||||||
import cn.iocoder.dashboard.modules.tool.controller.codegen.vo.table.ToolCodegenTablePageReqVO;
|
import cn.iocoder.dashboard.modules.tool.controller.codegen.vo.table.ToolCodegenTablePageReqVO;
|
||||||
import cn.iocoder.dashboard.modules.tool.controller.codegen.vo.table.ToolCodegenTableRespVO;
|
import cn.iocoder.dashboard.modules.tool.controller.codegen.vo.table.ToolCodegenTableRespVO;
|
||||||
|
import cn.iocoder.dashboard.modules.tool.controller.codegen.vo.table.ToolSchemaTableRespVO;
|
||||||
import cn.iocoder.dashboard.modules.tool.convert.codegen.ToolCodegenConvert;
|
import cn.iocoder.dashboard.modules.tool.convert.codegen.ToolCodegenConvert;
|
||||||
import cn.iocoder.dashboard.modules.tool.dal.dataobject.codegen.ToolCodegenColumnDO;
|
import cn.iocoder.dashboard.modules.tool.dal.dataobject.codegen.ToolCodegenColumnDO;
|
||||||
import cn.iocoder.dashboard.modules.tool.dal.dataobject.codegen.ToolCodegenTableDO;
|
import cn.iocoder.dashboard.modules.tool.dal.dataobject.codegen.ToolCodegenTableDO;
|
||||||
|
import cn.iocoder.dashboard.modules.tool.dal.dataobject.codegen.ToolSchemaTableDO;
|
||||||
import cn.iocoder.dashboard.modules.tool.service.codegen.ToolCodegenService;
|
import cn.iocoder.dashboard.modules.tool.service.codegen.ToolCodegenService;
|
||||||
import cn.iocoder.dashboard.util.servlet.ServletUtils;
|
import cn.iocoder.dashboard.util.servlet.ServletUtils;
|
||||||
import io.swagger.annotations.Api;
|
import io.swagger.annotations.Api;
|
||||||
import io.swagger.annotations.ApiImplicitParam;
|
import io.swagger.annotations.ApiImplicitParam;
|
||||||
|
import io.swagger.annotations.ApiImplicitParams;
|
||||||
import io.swagger.annotations.ApiOperation;
|
import io.swagger.annotations.ApiOperation;
|
||||||
import org.springframework.validation.annotation.Validated;
|
import org.springframework.validation.annotation.Validated;
|
||||||
import org.springframework.web.bind.annotation.*;
|
import org.springframework.web.bind.annotation.*;
|
||||||
|
@ -40,6 +43,23 @@ public class ToolCodegenController {
|
||||||
@Resource
|
@Resource
|
||||||
private ToolCodegenService codegenService;
|
private ToolCodegenService codegenService;
|
||||||
|
|
||||||
|
@ApiOperation(value = "获得数据库自带的表定义列表", notes = "会过滤掉已经导入 Codegen 的表")
|
||||||
|
@GetMapping("/db/table/list")
|
||||||
|
@ApiImplicitParams({
|
||||||
|
@ApiImplicitParam(name = "tableName", required = true, example = "yudao", dataTypeClass = String.class),
|
||||||
|
@ApiImplicitParam(name = "tableComment", required = true, example = "芋道", dataTypeClass = Long.class)
|
||||||
|
})
|
||||||
|
// @PreAuthorize("@ss.hasPermi('tool:gen:list')") TODO 权限
|
||||||
|
public CommonResult<List<ToolSchemaTableRespVO>> getSchemaTableList(
|
||||||
|
@RequestParam(value = "tableName", required = false) String tableName,
|
||||||
|
@RequestParam(value = "tableComment", required = false) String tableComment) {
|
||||||
|
// 获得数据库自带的表定义列表
|
||||||
|
List<ToolSchemaTableDO> schemaTables = codegenService.getSchemaTableList(tableName, tableComment);
|
||||||
|
// 移除在 Codegen 中,已经存在的
|
||||||
|
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
|
||||||
@ApiOperation("获得表定义分页")
|
@ApiOperation("获得表定义分页")
|
||||||
@GetMapping("/table/page")
|
@GetMapping("/table/page")
|
||||||
// TODO 权限 @PreAuthorize("@ss.hasPermi('tool:gen:list')")
|
// TODO 权限 @PreAuthorize("@ss.hasPermi('tool:gen:list')")
|
||||||
|
|
|
@ -0,0 +1,25 @@
|
||||||
|
package cn.iocoder.dashboard.modules.tool.controller.codegen.vo.table;
|
||||||
|
|
||||||
|
import io.swagger.annotations.ApiModel;
|
||||||
|
import io.swagger.annotations.ApiModelProperty;
|
||||||
|
import lombok.Data;
|
||||||
|
|
||||||
|
import java.util.Date;
|
||||||
|
|
||||||
|
@ApiModel("数据字典的表定义 Response VO")
|
||||||
|
@Data
|
||||||
|
public class ToolSchemaTableRespVO {
|
||||||
|
|
||||||
|
@ApiModelProperty(value = "数据库", required = true, example = "yudao")
|
||||||
|
private String tableSchema;
|
||||||
|
|
||||||
|
@ApiModelProperty(value = "表名称", required = true, example = "yuanma")
|
||||||
|
private String tableName;
|
||||||
|
|
||||||
|
@ApiModelProperty(value = "表描述", required = true, example = "芋道源码")
|
||||||
|
private String tableComment;
|
||||||
|
|
||||||
|
@ApiModelProperty(value = "创建时间", required = true)
|
||||||
|
private Date createTime;
|
||||||
|
|
||||||
|
}
|
|
@ -8,8 +8,8 @@ import cn.iocoder.dashboard.modules.tool.controller.codegen.vo.column.ToolCodege
|
||||||
import cn.iocoder.dashboard.modules.tool.controller.codegen.vo.table.ToolCodegenTableRespVO;
|
import cn.iocoder.dashboard.modules.tool.controller.codegen.vo.table.ToolCodegenTableRespVO;
|
||||||
import cn.iocoder.dashboard.modules.tool.dal.dataobject.codegen.ToolCodegenColumnDO;
|
import cn.iocoder.dashboard.modules.tool.dal.dataobject.codegen.ToolCodegenColumnDO;
|
||||||
import cn.iocoder.dashboard.modules.tool.dal.dataobject.codegen.ToolCodegenTableDO;
|
import cn.iocoder.dashboard.modules.tool.dal.dataobject.codegen.ToolCodegenTableDO;
|
||||||
import cn.iocoder.dashboard.modules.tool.dal.dataobject.codegen.ToolInformationSchemaColumnDO;
|
import cn.iocoder.dashboard.modules.tool.dal.dataobject.codegen.ToolSchemaColumnDO;
|
||||||
import cn.iocoder.dashboard.modules.tool.dal.dataobject.codegen.ToolInformationSchemaTableDO;
|
import cn.iocoder.dashboard.modules.tool.dal.dataobject.codegen.ToolSchemaTableDO;
|
||||||
import org.mapstruct.Mapper;
|
import org.mapstruct.Mapper;
|
||||||
import org.mapstruct.factory.Mappers;
|
import org.mapstruct.factory.Mappers;
|
||||||
|
|
||||||
|
@ -24,11 +24,11 @@ public interface ToolCodegenConvert {
|
||||||
|
|
||||||
// ========== ToolInformationSchemaTableDO 和 ToolInformationSchemaColumnDO 相关 ==========
|
// ========== ToolInformationSchemaTableDO 和 ToolInformationSchemaColumnDO 相关 ==========
|
||||||
|
|
||||||
ToolCodegenTableDO convert(ToolInformationSchemaTableDO bean);
|
ToolCodegenTableDO convert(ToolSchemaTableDO bean);
|
||||||
|
|
||||||
List<ToolCodegenColumnDO> convertList(List<ToolInformationSchemaColumnDO> list);
|
List<ToolCodegenColumnDO> convertList(List<ToolSchemaColumnDO> list);
|
||||||
|
|
||||||
ToolCodegenTableRespVO convert(ToolInformationSchemaColumnDO bean);
|
ToolCodegenTableRespVO convert(ToolSchemaColumnDO bean);
|
||||||
|
|
||||||
// ========== ToolCodegenTableDO 相关 ==========
|
// ========== ToolCodegenTableDO 相关 ==========
|
||||||
|
|
||||||
|
|
|
@ -13,7 +13,7 @@ import lombok.Data;
|
||||||
@TableName(value = "information_schema.columns", autoResultMap = true)
|
@TableName(value = "information_schema.columns", autoResultMap = true)
|
||||||
@Data
|
@Data
|
||||||
@Builder
|
@Builder
|
||||||
public class ToolInformationSchemaColumnDO {
|
public class ToolSchemaColumnDO {
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 表名称
|
* 表名称
|
|
@ -14,7 +14,7 @@ import java.util.Date;
|
||||||
@TableName(value = "information_schema.tables", autoResultMap = true)
|
@TableName(value = "information_schema.tables", autoResultMap = true)
|
||||||
@Data
|
@Data
|
||||||
@Builder
|
@Builder
|
||||||
public class ToolInformationSchemaTableDO {
|
public class ToolSchemaTableDO {
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 数据库
|
* 数据库
|
|
@ -1,21 +0,0 @@
|
||||||
package cn.iocoder.dashboard.modules.tool.dal.mysql.coegen;
|
|
||||||
|
|
||||||
import cn.iocoder.dashboard.framework.mybatis.core.mapper.BaseMapperX;
|
|
||||||
import cn.iocoder.dashboard.modules.tool.dal.dataobject.codegen.ToolInformationSchemaTableDO;
|
|
||||||
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
|
|
||||||
import org.apache.ibatis.annotations.Mapper;
|
|
||||||
|
|
||||||
import java.util.List;
|
|
||||||
|
|
||||||
@Mapper
|
|
||||||
public interface ToolInformationSchemaTableMapper extends BaseMapperX<ToolInformationSchemaTableDO> {
|
|
||||||
|
|
||||||
default List<ToolInformationSchemaTableDO> selectListByTableSchema(String tableSchema) {
|
|
||||||
return selectList(new QueryWrapper<ToolInformationSchemaTableDO>().eq("table_schema", tableSchema));
|
|
||||||
}
|
|
||||||
|
|
||||||
default ToolInformationSchemaTableDO selectByTableName(String tableName) {
|
|
||||||
return selectOne(new QueryWrapper<ToolInformationSchemaTableDO>().eq("table_name", tableName));
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
|
@ -1,17 +1,17 @@
|
||||||
package cn.iocoder.dashboard.modules.tool.dal.mysql.coegen;
|
package cn.iocoder.dashboard.modules.tool.dal.mysql.coegen;
|
||||||
|
|
||||||
import cn.iocoder.dashboard.framework.mybatis.core.mapper.BaseMapperX;
|
import cn.iocoder.dashboard.framework.mybatis.core.mapper.BaseMapperX;
|
||||||
import cn.iocoder.dashboard.modules.tool.dal.dataobject.codegen.ToolInformationSchemaColumnDO;
|
import cn.iocoder.dashboard.modules.tool.dal.dataobject.codegen.ToolSchemaColumnDO;
|
||||||
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
|
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
|
||||||
import org.apache.ibatis.annotations.Mapper;
|
import org.apache.ibatis.annotations.Mapper;
|
||||||
|
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
|
||||||
@Mapper
|
@Mapper
|
||||||
public interface ToolInformationSchemaColumnMapper extends BaseMapperX<ToolInformationSchemaColumnDO> {
|
public interface ToolSchemaColumnMapper extends BaseMapperX<ToolSchemaColumnDO> {
|
||||||
|
|
||||||
default List<ToolInformationSchemaColumnDO> selectListByTableName(String tableName) {
|
default List<ToolSchemaColumnDO> selectListByTableName(String tableName) {
|
||||||
return selectList(new QueryWrapper<ToolInformationSchemaColumnDO>().eq("table_name", tableName)
|
return selectList(new QueryWrapper<ToolSchemaColumnDO>().eq("table_name", tableName)
|
||||||
.orderByAsc("ordinal_position"));
|
.orderByAsc("ordinal_position"));
|
||||||
}
|
}
|
||||||
|
|
|
@ -0,0 +1,29 @@
|
||||||
|
package cn.iocoder.dashboard.modules.tool.dal.mysql.coegen;
|
||||||
|
|
||||||
|
import cn.iocoder.dashboard.framework.mybatis.core.mapper.BaseMapperX;
|
||||||
|
import cn.iocoder.dashboard.framework.mybatis.core.query.QueryWrapperX;
|
||||||
|
import cn.iocoder.dashboard.modules.tool.dal.dataobject.codegen.ToolSchemaTableDO;
|
||||||
|
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
|
||||||
|
import org.apache.ibatis.annotations.Mapper;
|
||||||
|
|
||||||
|
import java.util.Collection;
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
|
@Mapper
|
||||||
|
public interface ToolSchemaTableMapper extends BaseMapperX<ToolSchemaTableDO> {
|
||||||
|
|
||||||
|
default List<ToolSchemaTableDO> selectList(Collection<String> tableSchemas, String tableName, String tableComment) {
|
||||||
|
return selectList(new QueryWrapperX<ToolSchemaTableDO>().in("table_schema", tableSchemas)
|
||||||
|
.eqIfPresent("table_name", tableName)
|
||||||
|
.eqIfPresent("table_comment", tableComment));
|
||||||
|
}
|
||||||
|
|
||||||
|
default List<ToolSchemaTableDO> selectListByTableSchema(String tableSchema) {
|
||||||
|
return selectList(new QueryWrapper<ToolSchemaTableDO>().eq("table_schema", tableSchema));
|
||||||
|
}
|
||||||
|
|
||||||
|
default ToolSchemaTableDO selectByTableName(String tableName) {
|
||||||
|
return selectOne(new QueryWrapper<ToolSchemaTableDO>().eq("table_name", tableName));
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
|
@ -5,6 +5,7 @@ import cn.iocoder.dashboard.modules.tool.controller.codegen.vo.ToolCodegenUpdate
|
||||||
import cn.iocoder.dashboard.modules.tool.controller.codegen.vo.table.ToolCodegenTablePageReqVO;
|
import cn.iocoder.dashboard.modules.tool.controller.codegen.vo.table.ToolCodegenTablePageReqVO;
|
||||||
import cn.iocoder.dashboard.modules.tool.dal.dataobject.codegen.ToolCodegenColumnDO;
|
import cn.iocoder.dashboard.modules.tool.dal.dataobject.codegen.ToolCodegenColumnDO;
|
||||||
import cn.iocoder.dashboard.modules.tool.dal.dataobject.codegen.ToolCodegenTableDO;
|
import cn.iocoder.dashboard.modules.tool.dal.dataobject.codegen.ToolCodegenTableDO;
|
||||||
|
import cn.iocoder.dashboard.modules.tool.dal.dataobject.codegen.ToolSchemaTableDO;
|
||||||
|
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
import java.util.Map;
|
import java.util.Map;
|
||||||
|
@ -63,4 +64,13 @@ public interface ToolCodegenService {
|
||||||
*/
|
*/
|
||||||
Map<String, String> generationCodes(Long tableId);
|
Map<String, String> generationCodes(Long tableId);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 获得数据库自带的表定义列表
|
||||||
|
*
|
||||||
|
* @param tableName 表名称
|
||||||
|
* @param tableComment 表描述
|
||||||
|
* @return 表定义列表
|
||||||
|
*/
|
||||||
|
List<ToolSchemaTableDO> getSchemaTableList(String tableName, String tableComment);
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -6,8 +6,8 @@ import cn.iocoder.dashboard.framework.mybatis.core.dataobject.BaseDO;
|
||||||
import cn.iocoder.dashboard.modules.tool.convert.codegen.ToolCodegenConvert;
|
import cn.iocoder.dashboard.modules.tool.convert.codegen.ToolCodegenConvert;
|
||||||
import cn.iocoder.dashboard.modules.tool.dal.dataobject.codegen.ToolCodegenColumnDO;
|
import cn.iocoder.dashboard.modules.tool.dal.dataobject.codegen.ToolCodegenColumnDO;
|
||||||
import cn.iocoder.dashboard.modules.tool.dal.dataobject.codegen.ToolCodegenTableDO;
|
import cn.iocoder.dashboard.modules.tool.dal.dataobject.codegen.ToolCodegenTableDO;
|
||||||
import cn.iocoder.dashboard.modules.tool.dal.dataobject.codegen.ToolInformationSchemaColumnDO;
|
import cn.iocoder.dashboard.modules.tool.dal.dataobject.codegen.ToolSchemaColumnDO;
|
||||||
import cn.iocoder.dashboard.modules.tool.dal.dataobject.codegen.ToolInformationSchemaTableDO;
|
import cn.iocoder.dashboard.modules.tool.dal.dataobject.codegen.ToolSchemaTableDO;
|
||||||
import cn.iocoder.dashboard.modules.tool.enums.codegen.ToolCodegenColumnHtmlTypeEnum;
|
import cn.iocoder.dashboard.modules.tool.enums.codegen.ToolCodegenColumnHtmlTypeEnum;
|
||||||
import cn.iocoder.dashboard.modules.tool.enums.codegen.ToolCodegenColumnListConditionEnum;
|
import cn.iocoder.dashboard.modules.tool.enums.codegen.ToolCodegenColumnListConditionEnum;
|
||||||
import cn.iocoder.dashboard.modules.tool.enums.codegen.ToolCodegenTemplateTypeEnum;
|
import cn.iocoder.dashboard.modules.tool.enums.codegen.ToolCodegenTemplateTypeEnum;
|
||||||
|
@ -21,8 +21,8 @@ import static cn.hutool.core.text.CharSequenceUtil.*;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 代码生成器的 Builder,负责:
|
* 代码生成器的 Builder,负责:
|
||||||
* 1. 将数据库的表 {@link ToolInformationSchemaTableDO} 定义,构建成 {@link ToolCodegenTableDO}
|
* 1. 将数据库的表 {@link ToolSchemaTableDO} 定义,构建成 {@link ToolCodegenTableDO}
|
||||||
* 2. 将数据库的列 {@link ToolInformationSchemaColumnDO} 构定义,建成 {@link ToolCodegenColumnDO}
|
* 2. 将数据库的列 {@link ToolSchemaColumnDO} 构定义,建成 {@link ToolCodegenColumnDO}
|
||||||
*/
|
*/
|
||||||
@Component
|
@Component
|
||||||
public class ToolCodegenBuilder {
|
public class ToolCodegenBuilder {
|
||||||
|
@ -112,7 +112,7 @@ public class ToolCodegenBuilder {
|
||||||
LIST_OPERATION_RESULT_EXCLUDE_COLUMN.remove("createTime"); // 创建时间,还是需要返回的
|
LIST_OPERATION_RESULT_EXCLUDE_COLUMN.remove("createTime"); // 创建时间,还是需要返回的
|
||||||
}
|
}
|
||||||
|
|
||||||
public ToolCodegenTableDO buildTable(ToolInformationSchemaTableDO schemaTable) {
|
public ToolCodegenTableDO buildTable(ToolSchemaTableDO schemaTable) {
|
||||||
ToolCodegenTableDO table = ToolCodegenConvert.INSTANCE.convert(schemaTable);
|
ToolCodegenTableDO table = ToolCodegenConvert.INSTANCE.convert(schemaTable);
|
||||||
initTableDefault(table);
|
initTableDefault(table);
|
||||||
return table;
|
return table;
|
||||||
|
@ -135,7 +135,7 @@ public class ToolCodegenBuilder {
|
||||||
table.setTemplateType(ToolCodegenTemplateTypeEnum.CRUD.getType());
|
table.setTemplateType(ToolCodegenTemplateTypeEnum.CRUD.getType());
|
||||||
}
|
}
|
||||||
|
|
||||||
public List<ToolCodegenColumnDO> buildColumns(List<ToolInformationSchemaColumnDO> schemaColumns) {
|
public List<ToolCodegenColumnDO> buildColumns(List<ToolSchemaColumnDO> schemaColumns) {
|
||||||
List<ToolCodegenColumnDO> columns = ToolCodegenConvert.INSTANCE.convertList(schemaColumns);
|
List<ToolCodegenColumnDO> columns = ToolCodegenConvert.INSTANCE.convertList(schemaColumns);
|
||||||
columns.forEach(this::initColumnDefault);
|
columns.forEach(this::initColumnDefault);
|
||||||
return columns;
|
return columns;
|
||||||
|
|
|
@ -9,6 +9,7 @@ import cn.iocoder.dashboard.common.exception.util.ServiceExceptionUtil;
|
||||||
import cn.iocoder.dashboard.common.pojo.CommonResult;
|
import cn.iocoder.dashboard.common.pojo.CommonResult;
|
||||||
import cn.iocoder.dashboard.common.pojo.PageParam;
|
import cn.iocoder.dashboard.common.pojo.PageParam;
|
||||||
import cn.iocoder.dashboard.common.pojo.PageResult;
|
import cn.iocoder.dashboard.common.pojo.PageResult;
|
||||||
|
import cn.iocoder.dashboard.framework.codegen.config.CodegenProperties;
|
||||||
import cn.iocoder.dashboard.framework.mybatis.core.dataobject.BaseDO;
|
import cn.iocoder.dashboard.framework.mybatis.core.dataobject.BaseDO;
|
||||||
import cn.iocoder.dashboard.framework.mybatis.core.mapper.BaseMapperX;
|
import cn.iocoder.dashboard.framework.mybatis.core.mapper.BaseMapperX;
|
||||||
import cn.iocoder.dashboard.framework.mybatis.core.query.QueryWrapperX;
|
import cn.iocoder.dashboard.framework.mybatis.core.query.QueryWrapperX;
|
||||||
|
@ -19,6 +20,7 @@ import cn.iocoder.dashboard.util.date.DateUtils;
|
||||||
import com.google.common.collect.Maps;
|
import com.google.common.collect.Maps;
|
||||||
import org.springframework.stereotype.Component;
|
import org.springframework.stereotype.Component;
|
||||||
|
|
||||||
|
import javax.annotation.PostConstruct;
|
||||||
import javax.annotation.Resource;
|
import javax.annotation.Resource;
|
||||||
import java.util.HashMap;
|
import java.util.HashMap;
|
||||||
import java.util.LinkedHashMap;
|
import java.util.LinkedHashMap;
|
||||||
|
@ -45,18 +47,30 @@ public class ToolCodegenEngine {
|
||||||
*/
|
*/
|
||||||
private static final Map<String, String> TEMPLATES = MapUtil.<String, String>builder(new LinkedHashMap<>()) // 有序
|
private static final Map<String, String> TEMPLATES = MapUtil.<String, String>builder(new LinkedHashMap<>()) // 有序
|
||||||
// Java
|
// Java
|
||||||
.put("codegen/java/controller/controller.vm", "java/${basePackage}/${table.moduleName}/controller/${table.businessName}/${table.className}Controller.java")
|
.put(javaTemplatePath("controller/controller"),
|
||||||
.put("codegen/java/controller/vo/baseVO.vm", "java/${basePackage}/${table.moduleName}/controller/${table.businessName}/vo/${table.className}BaseVO.java")
|
javaFilePath("controller/${table.businessName}/${table.className}Controller"))
|
||||||
.put("codegen/java/controller/vo/createReqVO.vm", "java/${basePackage}/${table.moduleName}/controller/${table.businessName}/vo/${table.className}CreateReqVO.java")
|
.put(javaTemplatePath("controller/vo/baseVO"),
|
||||||
.put("codegen/java/controller/vo/pageReqVO.vm", "java/${basePackage}/${table.moduleName}/controller/${table.businessName}/vo/${table.className}PageReqVO.java")
|
javaFilePath("controller/${table.businessName}/vo/${table.className}BaseVO"))
|
||||||
.put("codegen/java/controller/vo/respVO.vm", "java/${basePackage}/${table.moduleName}/controller/${table.businessName}/vo/${table.className}RespVO.java")
|
.put(javaTemplatePath("controller/vo/createReqVO"),
|
||||||
.put("codegen/java/controller/vo/updateReqVO.vm", "java/${basePackage}/${table.moduleName}/controller/${table.businessName}/vo/${table.className}UpdateReqVO.java")
|
javaFilePath("controller/${table.businessName}/vo/${table.className}CreateReqVO"))
|
||||||
.put("codegen/java/convert/convert.vm", "java/${basePackage}/${table.moduleName}/convert/${table.businessName}/${table.className}Convert.java")
|
.put(javaTemplatePath("controller/vo/pageReqVO"),
|
||||||
.put("codegen/java/dal/do.vm", "java/${basePackage}/${table.moduleName}/dal/dataobject/${table.businessName}/${table.className}DO.java")
|
javaFilePath("controller/${table.businessName}/vo/${table.className}PageReqVO"))
|
||||||
.put("codegen/java/dal/mapper.vm", "java/${basePackage}/${table.moduleName}/dal/mysql/${table.businessName}/${table.className}Mapper.java")
|
.put(javaTemplatePath("controller/vo/respVO"),
|
||||||
.put("codegen/java/enums/errorcode.vm", "java/${basePackage}/${table.moduleName}/enums/${simpleModuleName_upperFirst}ErrorCodeConstants.java")
|
javaFilePath("controller/${table.businessName}/vo/${table.className}RespVO"))
|
||||||
.put("codegen/java/service/service.vm", "java/${basePackage}/${table.moduleName}/service/${table.businessName}/${table.className}Service.java")
|
.put(javaTemplatePath("controller/vo/updateReqVO"),
|
||||||
.put("codegen/java/service/serviceImpl.vm", "java/${basePackage}/${table.moduleName}/service/${table.businessName}/impl/${table.className}ServiceImpl.java")
|
javaFilePath("controller/${table.businessName}/vo/${table.className}UpdateReqVO"))
|
||||||
|
.put(javaTemplatePath("convert/convert"),
|
||||||
|
javaFilePath("convert/${table.businessName}/${table.className}Convert"))
|
||||||
|
.put(javaTemplatePath("dal/do"),
|
||||||
|
javaFilePath("dal/dataobject/${table.businessName}/${table.className}DO"))
|
||||||
|
.put(javaTemplatePath("dal/mapper"),
|
||||||
|
javaFilePath("dal/mysql/${table.businessName}/${table.className}Mapper"))
|
||||||
|
.put(javaTemplatePath("enums/errorcode"),
|
||||||
|
javaFilePath("enums/${simpleModuleName_upperFirst}ErrorCodeConstants"))
|
||||||
|
.put(javaTemplatePath("service/service"),
|
||||||
|
javaFilePath("service/${table.businessName}/${table.className}Service"))
|
||||||
|
.put(javaTemplatePath("service/serviceImpl"),
|
||||||
|
javaFilePath("service/${table.businessName}/impl/${table.className}ServiceImpl"))
|
||||||
// Vue
|
// Vue
|
||||||
// SQL
|
// SQL
|
||||||
.build();
|
.build();
|
||||||
|
@ -64,6 +78,9 @@ public class ToolCodegenEngine {
|
||||||
@Resource
|
@Resource
|
||||||
private ToolCodegenBuilder codegenBuilder;
|
private ToolCodegenBuilder codegenBuilder;
|
||||||
|
|
||||||
|
@Resource
|
||||||
|
private CodegenProperties codegenProperties;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 模板引擎,由 hutool 实现
|
* 模板引擎,由 hutool 实现
|
||||||
*/
|
*/
|
||||||
|
@ -78,13 +95,12 @@ public class ToolCodegenEngine {
|
||||||
TemplateConfig config = new TemplateConfig();
|
TemplateConfig config = new TemplateConfig();
|
||||||
config.setResourceMode(TemplateConfig.ResourceMode.CLASSPATH);
|
config.setResourceMode(TemplateConfig.ResourceMode.CLASSPATH);
|
||||||
this.templateEngine = TemplateUtil.createEngine(config);
|
this.templateEngine = TemplateUtil.createEngine(config);
|
||||||
// 初始化基础 bindingMap
|
|
||||||
initGlobalBindingMap();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@PostConstruct
|
||||||
private void initGlobalBindingMap() {
|
private void initGlobalBindingMap() {
|
||||||
// 全局配置
|
// 全局配置
|
||||||
globalBindingMap.put("basePackage", "cn.iocoder.dashboard.modules"); // TODO 基础包, 抽成参数
|
globalBindingMap.put("basePackage", codegenProperties.getBasePackage());
|
||||||
// 全局 Java Bean
|
// 全局 Java Bean
|
||||||
globalBindingMap.put("CommonResultClassName", CommonResult.class.getName());
|
globalBindingMap.put("CommonResultClassName", CommonResult.class.getName());
|
||||||
globalBindingMap.put("PageResultClassName", PageResult.class.getName());
|
globalBindingMap.put("PageResultClassName", PageResult.class.getName());
|
||||||
|
@ -137,4 +153,12 @@ public class ToolCodegenEngine {
|
||||||
return filePath;
|
return filePath;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private static String javaTemplatePath(String path) {
|
||||||
|
return "codegen/java/" + path + ".vm";
|
||||||
|
}
|
||||||
|
|
||||||
|
private static String javaFilePath(String path) {
|
||||||
|
return "java/${basePackage}/${table.moduleName}/" + path + ".java";
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -2,17 +2,18 @@ package cn.iocoder.dashboard.modules.tool.service.codegen.impl;
|
||||||
|
|
||||||
import cn.hutool.core.collection.CollUtil;
|
import cn.hutool.core.collection.CollUtil;
|
||||||
import cn.iocoder.dashboard.common.pojo.PageResult;
|
import cn.iocoder.dashboard.common.pojo.PageResult;
|
||||||
|
import cn.iocoder.dashboard.framework.codegen.config.CodegenProperties;
|
||||||
import cn.iocoder.dashboard.modules.tool.controller.codegen.vo.ToolCodegenUpdateReqVO;
|
import cn.iocoder.dashboard.modules.tool.controller.codegen.vo.ToolCodegenUpdateReqVO;
|
||||||
import cn.iocoder.dashboard.modules.tool.controller.codegen.vo.table.ToolCodegenTablePageReqVO;
|
import cn.iocoder.dashboard.modules.tool.controller.codegen.vo.table.ToolCodegenTablePageReqVO;
|
||||||
import cn.iocoder.dashboard.modules.tool.convert.codegen.ToolCodegenConvert;
|
import cn.iocoder.dashboard.modules.tool.convert.codegen.ToolCodegenConvert;
|
||||||
import cn.iocoder.dashboard.modules.tool.dal.mysql.coegen.ToolCodegenColumnMapper;
|
|
||||||
import cn.iocoder.dashboard.modules.tool.dal.mysql.coegen.ToolCodegenTableMapper;
|
|
||||||
import cn.iocoder.dashboard.modules.tool.dal.mysql.coegen.ToolInformationSchemaColumnMapper;
|
|
||||||
import cn.iocoder.dashboard.modules.tool.dal.mysql.coegen.ToolInformationSchemaTableMapper;
|
|
||||||
import cn.iocoder.dashboard.modules.tool.dal.dataobject.codegen.ToolCodegenColumnDO;
|
import cn.iocoder.dashboard.modules.tool.dal.dataobject.codegen.ToolCodegenColumnDO;
|
||||||
import cn.iocoder.dashboard.modules.tool.dal.dataobject.codegen.ToolCodegenTableDO;
|
import cn.iocoder.dashboard.modules.tool.dal.dataobject.codegen.ToolCodegenTableDO;
|
||||||
import cn.iocoder.dashboard.modules.tool.dal.dataobject.codegen.ToolInformationSchemaColumnDO;
|
import cn.iocoder.dashboard.modules.tool.dal.dataobject.codegen.ToolSchemaColumnDO;
|
||||||
import cn.iocoder.dashboard.modules.tool.dal.dataobject.codegen.ToolInformationSchemaTableDO;
|
import cn.iocoder.dashboard.modules.tool.dal.dataobject.codegen.ToolSchemaTableDO;
|
||||||
|
import cn.iocoder.dashboard.modules.tool.dal.mysql.coegen.ToolCodegenColumnMapper;
|
||||||
|
import cn.iocoder.dashboard.modules.tool.dal.mysql.coegen.ToolCodegenTableMapper;
|
||||||
|
import cn.iocoder.dashboard.modules.tool.dal.mysql.coegen.ToolSchemaColumnMapper;
|
||||||
|
import cn.iocoder.dashboard.modules.tool.dal.mysql.coegen.ToolSchemaTableMapper;
|
||||||
import cn.iocoder.dashboard.modules.tool.service.codegen.ToolCodegenService;
|
import cn.iocoder.dashboard.modules.tool.service.codegen.ToolCodegenService;
|
||||||
import org.springframework.stereotype.Service;
|
import org.springframework.stereotype.Service;
|
||||||
import org.springframework.transaction.annotation.Transactional;
|
import org.springframework.transaction.annotation.Transactional;
|
||||||
|
@ -30,9 +31,9 @@ import java.util.Map;
|
||||||
public class ToolCodegenServiceImpl implements ToolCodegenService {
|
public class ToolCodegenServiceImpl implements ToolCodegenService {
|
||||||
|
|
||||||
@Resource
|
@Resource
|
||||||
private ToolInformationSchemaTableMapper informationSchemaTableMapper;
|
private ToolSchemaTableMapper schemaTableMapper;
|
||||||
@Resource
|
@Resource
|
||||||
private ToolInformationSchemaColumnMapper informationSchemaColumnMapper;
|
private ToolSchemaColumnMapper schemaColumnMapper;
|
||||||
@Resource
|
@Resource
|
||||||
private ToolCodegenTableMapper codegenTableMapper;
|
private ToolCodegenTableMapper codegenTableMapper;
|
||||||
@Resource
|
@Resource
|
||||||
|
@ -43,15 +44,18 @@ public class ToolCodegenServiceImpl implements ToolCodegenService {
|
||||||
@Resource
|
@Resource
|
||||||
private ToolCodegenEngine codegenEngine;
|
private ToolCodegenEngine codegenEngine;
|
||||||
|
|
||||||
|
@Resource
|
||||||
|
private CodegenProperties codegenProperties;
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
@Transactional
|
@Transactional
|
||||||
public Long createCodegen(String tableName) {
|
public Long createCodegen(String tableName) {
|
||||||
// 从数据库中,获得数据库表结构
|
// 从数据库中,获得数据库表结构
|
||||||
ToolInformationSchemaTableDO schemaTable = informationSchemaTableMapper.selectByTableName(tableName);
|
ToolSchemaTableDO schemaTable = schemaTableMapper.selectByTableName(tableName);
|
||||||
if (schemaTable == null) {
|
if (schemaTable == null) {
|
||||||
throw new RuntimeException(""); // TODO
|
throw new RuntimeException(""); // TODO
|
||||||
}
|
}
|
||||||
List<ToolInformationSchemaColumnDO> schemaColumns = informationSchemaColumnMapper.selectListByTableName(tableName);
|
List<ToolSchemaColumnDO> schemaColumns = schemaColumnMapper.selectListByTableName(tableName);
|
||||||
if (CollUtil.isEmpty(schemaColumns)) {
|
if (CollUtil.isEmpty(schemaColumns)) {
|
||||||
throw new RuntimeException(""); // TODO
|
throw new RuntimeException(""); // TODO
|
||||||
}
|
}
|
||||||
|
@ -119,4 +123,9 @@ public class ToolCodegenServiceImpl implements ToolCodegenService {
|
||||||
return codegenEngine.execute(table, columns);
|
return codegenEngine.execute(table, columns);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public List<ToolSchemaTableDO> getSchemaTableList(String tableName, String tableComment) {
|
||||||
|
return schemaTableMapper.selectList(codegenProperties.getDbSchemas(), tableName, tableComment);
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -44,10 +44,12 @@ spring:
|
||||||
|
|
||||||
# 芋道配置项,设置当前项目所有自定义的配置
|
# 芋道配置项,设置当前项目所有自定义的配置
|
||||||
yudao:
|
yudao:
|
||||||
version: 1.0.0
|
info:
|
||||||
|
version: 1.0.0
|
||||||
|
base-package: cn.iocoder.dashboard
|
||||||
web:
|
web:
|
||||||
api-prefix: /api
|
api-prefix: /api
|
||||||
controller-package: cn.iocoder.dashboard
|
controller-package: ${yudao.info.base-package}
|
||||||
security:
|
security:
|
||||||
token-header: Authorization
|
token-header: Authorization
|
||||||
token-secret: abcdefghijklmnopqrstuvwxyz
|
token-secret: abcdefghijklmnopqrstuvwxyz
|
||||||
|
@ -66,6 +68,9 @@ yudao:
|
||||||
height: 60
|
height: 60
|
||||||
file:
|
file:
|
||||||
base-path: http://127.0.0.1:1024/api/file/get/
|
base-path: http://127.0.0.1:1024/api/file/get/
|
||||||
|
codegen:
|
||||||
|
base-package: ${yudao.info.base-package}.modules
|
||||||
|
db-schemas: ruoyi-vue-pro
|
||||||
|
|
||||||
# Apollo 配置中心
|
# Apollo 配置中心
|
||||||
apollo:
|
apollo:
|
||||||
|
@ -89,7 +94,7 @@ mybatis-plus:
|
||||||
logic-delete-value: 1 # 逻辑已删除值(默认为 1)
|
logic-delete-value: 1 # 逻辑已删除值(默认为 1)
|
||||||
logic-not-delete-value: 0 # 逻辑未删除值(默认为 0)
|
logic-not-delete-value: 0 # 逻辑未删除值(默认为 0)
|
||||||
mapper-locations: classpath*:mapper/*.xml
|
mapper-locations: classpath*:mapper/*.xml
|
||||||
type-aliases-package: cn.iocoder.dashboard.modules.*.dal.mysql.dataobject
|
type-aliases-package: ${yudao.info.base-package}.modules.*.dal.dataobject
|
||||||
|
|
||||||
# Actuator 监控端点的配置项
|
# Actuator 监控端点的配置项
|
||||||
management:
|
management:
|
||||||
|
|
|
@ -1,25 +1,17 @@
|
||||||
芋道源码 http://www.iocoder.cn
|
芋道源码 http://www.iocoder.cn
|
||||||
Application Version: ${yudao.version}
|
Application Version: ${yudao.info.version}
|
||||||
Spring Boot Version: ${spring-boot.version}
|
Spring Boot Version: ${spring-boot.version}
|
||||||
////////////////////////////////////////////////////////////////////
|
|
||||||
// _ooOoo_ //
|
.__ __. ______ .______ __ __ _______
|
||||||
// o8888888o //
|
| \ | | / __ \ | _ \ | | | | / _____|
|
||||||
// 88" . "88 //
|
| \| | | | | | | |_) | | | | | | | __
|
||||||
// (| ^_^ |) //
|
| . ` | | | | | | _ < | | | | | | |_ |
|
||||||
// O\ = /O //
|
| |\ | | `--' | | |_) | | `--' | | |__| |
|
||||||
// ____/`---'\____ //
|
|__| \__| \______/ |______/ \______/ \______|
|
||||||
// .' \\| |// `. //
|
|
||||||
// / \\||| : |||// \ //
|
███╗ ██╗ ██████╗ ██████╗ ██╗ ██╗ ██████╗
|
||||||
// / _||||| -:- |||||- \ //
|
████╗ ██║██╔═══██╗ ██╔══██╗██║ ██║██╔════╝
|
||||||
// | | \\\ - /// | | //
|
██╔██╗ ██║██║ ██║ ██████╔╝██║ ██║██║ ███╗
|
||||||
// | \_| ''\---/'' | | //
|
██║╚██╗██║██║ ██║ ██╔══██╗██║ ██║██║ ██║
|
||||||
// \ .-\__ `-` ___/-. / //
|
██║ ╚████║╚██████╔╝ ██████╔╝╚██████╔╝╚██████╔╝
|
||||||
// ___`. .' /--.--\ `. . ___ //
|
╚═╝ ╚═══╝ ╚═════╝ ╚═════╝ ╚═════╝ ╚═════╝
|
||||||
// ."" '< `.___\_<|>_/___.' >'"". //
|
|
||||||
// | | : `- \`.;`\ _ /`;.`/ - ` : | | //
|
|
||||||
// \ \ `-. \_ __\ /__ _/ .-` / / //
|
|
||||||
// ========`-.____`-.___\_____/___.-`____.-'======== //
|
|
||||||
// `=---=' //
|
|
||||||
// ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ //
|
|
||||||
// 佛祖保佑 永不宕机 永无BUG //
|
|
||||||
////////////////////////////////////////////////////////////////////
|
|
||||||
|
|
|
@ -1,7 +1,7 @@
|
||||||
package cn.iocoder.dashboard.modules.tool.dal.mysql.coegen;
|
package cn.iocoder.dashboard.modules.tool.dal.mysql.coegen;
|
||||||
|
|
||||||
import cn.iocoder.dashboard.TestApplication;
|
import cn.iocoder.dashboard.TestApplication;
|
||||||
import cn.iocoder.dashboard.modules.tool.dal.dataobject.codegen.ToolInformationSchemaColumnDO;
|
import cn.iocoder.dashboard.modules.tool.dal.dataobject.codegen.ToolSchemaColumnDO;
|
||||||
import org.junit.jupiter.api.Test;
|
import org.junit.jupiter.api.Test;
|
||||||
import org.springframework.boot.test.context.SpringBootTest;
|
import org.springframework.boot.test.context.SpringBootTest;
|
||||||
|
|
||||||
|
@ -15,11 +15,11 @@ import static org.junit.jupiter.api.Assertions.assertTrue;
|
||||||
public class ToolInformationSchemaColumnMapperTest {
|
public class ToolInformationSchemaColumnMapperTest {
|
||||||
|
|
||||||
@Resource
|
@Resource
|
||||||
private ToolInformationSchemaColumnMapper toolInformationSchemaColumnMapper;
|
private ToolSchemaColumnMapper toolInformationSchemaColumnMapper;
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
public void testSelectListByTableName() {
|
public void testSelectListByTableName() {
|
||||||
List<ToolInformationSchemaColumnDO> columns = toolInformationSchemaColumnMapper
|
List<ToolSchemaColumnDO> columns = toolInformationSchemaColumnMapper
|
||||||
.selectListByTableName("inf_config");
|
.selectListByTableName("inf_config");
|
||||||
assertTrue(columns.size() > 0);
|
assertTrue(columns.size() > 0);
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,7 +1,7 @@
|
||||||
package cn.iocoder.dashboard.modules.tool.dal.mysql.coegen;
|
package cn.iocoder.dashboard.modules.tool.dal.mysql.coegen;
|
||||||
|
|
||||||
import cn.iocoder.dashboard.TestApplication;
|
import cn.iocoder.dashboard.TestApplication;
|
||||||
import cn.iocoder.dashboard.modules.tool.dal.dataobject.codegen.ToolInformationSchemaTableDO;
|
import cn.iocoder.dashboard.modules.tool.dal.dataobject.codegen.ToolSchemaTableDO;
|
||||||
import org.junit.jupiter.api.Test;
|
import org.junit.jupiter.api.Test;
|
||||||
import org.springframework.boot.test.context.SpringBootTest;
|
import org.springframework.boot.test.context.SpringBootTest;
|
||||||
|
|
||||||
|
@ -14,11 +14,11 @@ import static org.junit.jupiter.api.Assertions.assertTrue;
|
||||||
class ToolInformationSchemaTableMapperTest {
|
class ToolInformationSchemaTableMapperTest {
|
||||||
|
|
||||||
@Resource
|
@Resource
|
||||||
private ToolInformationSchemaTableMapper toolInformationSchemaTableMapper;
|
private ToolSchemaTableMapper toolInformationSchemaTableMapper;
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
public void tstSelectListByTableSchema() {
|
public void tstSelectListByTableSchema() {
|
||||||
List<ToolInformationSchemaTableDO> tables = toolInformationSchemaTableMapper
|
List<ToolSchemaTableDO> tables = toolInformationSchemaTableMapper
|
||||||
.selectListByTableSchema("ruoyi-vue-pro");
|
.selectListByTableSchema("ruoyi-vue-pro");
|
||||||
assertTrue(tables.size() > 0);
|
assertTrue(tables.size() > 0);
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue