mirror of
https://gitcode.com/ageerle/ruoyi-ai.git
synced 2026-04-16 05:13:41 +00:00
feat: 更新代码生成功能-添加数据模型批量添加字段数据
This commit is contained in:
@@ -11,9 +11,12 @@ import org.ruoyi.enums.DataBaseType;
|
||||
import javax.sql.DataSource;
|
||||
import java.sql.Connection;
|
||||
import java.sql.DatabaseMetaData;
|
||||
import java.sql.ResultSet;
|
||||
import java.sql.SQLException;
|
||||
import java.util.ArrayList;
|
||||
import java.util.HashMap;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
|
||||
/**
|
||||
* 数据库助手
|
||||
@@ -102,4 +105,59 @@ public class DataBaseHelper {
|
||||
}
|
||||
return tableNames;
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取指定表的字段信息
|
||||
*
|
||||
* @param tableName 表名
|
||||
* @return 字段信息列表
|
||||
*/
|
||||
public static List<Map<String, Object>> getTableColumnInfo(String tableName) {
|
||||
DataSource dataSource = DS.determineDataSource();
|
||||
List<Map<String, Object>> columns = new ArrayList<>();
|
||||
|
||||
try (Connection conn = dataSource.getConnection()) {
|
||||
DatabaseMetaData metaData = conn.getMetaData();
|
||||
String catalog = conn.getCatalog();
|
||||
String schema = conn.getSchema();
|
||||
|
||||
// 获取表字段信息
|
||||
try (ResultSet resultSet = metaData.getColumns(catalog, schema, tableName, "%")) {
|
||||
while (resultSet.next()) {
|
||||
Map<String, Object> column = new HashMap<>();
|
||||
column.put("columnName", resultSet.getString("COLUMN_NAME"));
|
||||
column.put("columnComment", resultSet.getString("REMARKS"));
|
||||
column.put("dataType", resultSet.getString("TYPE_NAME"));
|
||||
column.put("columnSize", resultSet.getInt("COLUMN_SIZE"));
|
||||
column.put("isNullable", "YES".equals(resultSet.getString("IS_NULLABLE")));
|
||||
column.put("ordinalPosition", resultSet.getInt("ORDINAL_POSITION"));
|
||||
|
||||
// 设置默认值
|
||||
String defaultValue = resultSet.getString("COLUMN_DEF");
|
||||
column.put("columnDefault", defaultValue);
|
||||
|
||||
columns.add(column);
|
||||
}
|
||||
}
|
||||
|
||||
// 获取主键信息
|
||||
try (ResultSet pkResultSet = metaData.getPrimaryKeys(catalog, schema, tableName)) {
|
||||
List<String> primaryKeys = new ArrayList<>();
|
||||
while (pkResultSet.next()) {
|
||||
primaryKeys.add(pkResultSet.getString("COLUMN_NAME"));
|
||||
}
|
||||
|
||||
// 标记主键字段
|
||||
for (Map<String, Object> column : columns) {
|
||||
String columnName = (String) column.get("columnName");
|
||||
column.put("isPrimaryKey", primaryKeys.contains(columnName));
|
||||
}
|
||||
}
|
||||
|
||||
} catch (SQLException e) {
|
||||
throw new ServiceException("获取表字段信息失败: " + e.getMessage());
|
||||
}
|
||||
|
||||
return columns;
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user