Search in sources :

Example 1 with DbTypeConverter

use of com.hccake.ballcat.codegen.database.DbTypeConverter 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;
}
Also used : GenerateProperties(com.hccake.ballcat.codegen.model.bo.GenerateProperties) ColumnProperties(com.hccake.ballcat.codegen.model.bo.ColumnProperties) IColumnType(com.hccake.ballcat.codegen.database.IColumnType) ArrayList(java.util.ArrayList) ColumnInfo(com.hccake.ballcat.codegen.model.bo.ColumnInfo) DbType(com.baomidou.mybatisplus.annotation.DbType) DbTypeConverter(com.hccake.ballcat.codegen.database.DbTypeConverter)

Aggregations

DbType (com.baomidou.mybatisplus.annotation.DbType)1 DbTypeConverter (com.hccake.ballcat.codegen.database.DbTypeConverter)1 IColumnType (com.hccake.ballcat.codegen.database.IColumnType)1 ColumnInfo (com.hccake.ballcat.codegen.model.bo.ColumnInfo)1 ColumnProperties (com.hccake.ballcat.codegen.model.bo.ColumnProperties)1 GenerateProperties (com.hccake.ballcat.codegen.model.bo.GenerateProperties)1 ArrayList (java.util.ArrayList)1