use of com.hccake.ballcat.codegen.model.bo.ColumnProperties 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