use of com.hccake.ballcat.codegen.model.bo.ColumnInfo in project ballcat-codegen by ballcat-projects.
the class TableInfoQuery method queryTableDetails.
/**
* 查询指定表的详细信息
* @param tableName 表名称
* @return TableDetails
*/
public TableDetails queryTableDetails(String tableName) {
DbType dbType = getDbType();
TableInfoMapper baseMapper = tableInfoMapperMap.get(dbType);
// 查询表信息
TableInfo tableInfo = baseMapper.queryTableInfo(tableName);
// 查询列信息
List<ColumnInfo> columnInfoList = baseMapper.listColumnInfo(tableName);
TableDetails tableDetails = new TableDetails();
tableDetails.setDbType(dbType);
tableDetails.setTableName(tableInfo.getTableName());
tableDetails.setEngine(tableInfo.getEngine());
tableDetails.setTableComment(tableInfo.getTableComment());
tableDetails.setCreateTime(tableInfo.getCreateTime());
tableDetails.setColumnInfos(columnInfoList);
return tableDetails;
}
use of com.hccake.ballcat.codegen.model.bo.ColumnInfo in project ballcat-codegen by ballcat-projects.
the class GenUtils method getGenerateProperties.
/**
* 根据表信息和字段信息获取对应的配置属性
* @param tableDetails 表详情
* @param tablePrefix 表前缀
* @return GenerateProperties
*/
private GenerateProperties getGenerateProperties(TableDetails tableDetails, String tablePrefix) {
// 表信息
GenerateProperties generateProperties = new GenerateProperties();
// 表名
String tableName = tableDetails.getTableName();
generateProperties.setTableName(tableName);
// 去除前缀的表名
String noPrefixTableName = tableName;
if (StringUtils.isNotBlank(tablePrefix) && tableName.startsWith(tablePrefix)) {
noPrefixTableName = tableName.substring(tablePrefix.length());
}
// 表备注
generateProperties.setComments(tableDetails.getTableComment());
// 大驼峰类名
String className = underlineToCamel(noPrefixTableName);
generateProperties.setClassName(className);
// 表别名
generateProperties.setTableAlias(prodAlias(className));
// 小驼峰类名
String classname = StringUtils.uncapitalize(className);
generateProperties.setClassname(classname);
// 请求路径
generateProperties.setPath(noPrefixTableName.replace('_', '-'));
generateProperties.setPathName(classname.toLowerCase());
// 列信息
List<ColumnProperties> columnList = new ArrayList<>();
// 类型转换器
DbType dbType = tableDetails.getDbType();
DbTypeConverter dbTypeConverter = DbTypeConverterManager.getTypeConverter(dbType);
Assert.notNull(dbTypeConverter, "未找到对应的数据库类型转换器:{}", dbType);
for (ColumnInfo columnInfo : tableDetails.getColumnInfos()) {
String columnName = columnInfo.getColumnName();
ColumnProperties columnProperties = new ColumnProperties();
columnProperties.setColumnName(columnName);
columnProperties.setDataType(columnInfo.getDataType());
columnProperties.setComments(columnInfo.getColumnComment());
columnProperties.setExtra(columnInfo.getExtra());
columnProperties.setColumnType(columnInfo.getColumnType());
// 列名转换成Java属性名
String capitalizedAttrName = underlineToCamel(columnName);
columnProperties.setCapitalizedAttrName(capitalizedAttrName);
columnProperties.setAttrName(StringUtils.uncapitalize(capitalizedAttrName));
// 列的数据类型,转换成Java类型
IColumnType columnType = dbTypeConverter.convert(columnProperties.getDataType());
String columnJavaType = columnType.getType();
columnProperties.setAttrType(columnJavaType);
// 列的 ts数据类型
columnProperties.setTsAttrType(TypeScriptTypeConverter.javaToTs(columnJavaType));
// 是否主键
if ("PRI".equalsIgnoreCase(columnInfo.getColumnKey()) && generateProperties.getPk() == null) {
generateProperties.setPk(columnProperties);
}
columnList.add(columnProperties);
}
generateProperties.setColumns(columnList);
// 没主键,则第一个字段为主键
if (generateProperties.getPk() == null) {
generateProperties.setPk(generateProperties.getColumns().get(0));
}
// 当前时间
generateProperties.setCurrentTime(DateUtil.now());
return generateProperties;
}
Aggregations