根据SQL获取元数据信息

最后更新:2024-02-01 10:28:01 | 状态:未完成
根据SQL获取元数据信息
service.metadata(String sql, boolean comment)
comment:表示是否需要获取列注释,需要数据库官方驱动的支持
因为查询列注释需要解析列属性表,并查询系统表,所以会有额外耗时。

如果需要获取表结构应该用service.metadata().table("表名")//返回列、索引等全部表结构
或service.metadata().columns("表名")只返回列

同时每个查询结果DataRow/DataSet中已自带了元数据信息DataRow.getMetadata()可以返回

/**
* 根据sql获取列结构, 如果有表名应该调用metadata().columns(table);或metadata().table(table).getColumns()
* @param sql sql
* @param comment 是否需要列注释
* @param condition 是否需要拼接查询条件, 如果需要会拼接where 1=0 条件(默认不添加,通常情况下SQL自带查询条件,给参数赋值NULL达到相同的效果)
* @return LinkedHashMap
*/
LinkedHashMap<String, Column> metadata(String sql, boolean comment, boolean condition);


// 1直接获取元数据
//sql server 列元数据中不返回表名,所以查不到注释
LinkedHashMap<String,Column> columns = service.metadata("SELECT ID AS USER_ID, ID AS ID, CODE AS USER_CODE FROM CRM_USER WHERE ID = :ID ");
for(Column column:columns.values()){
	System.out.println(column);
}
//2.获取表结构的同时获取列数据
Table tab = service.metadata().table("CRM_USER");
columns = tab.getColumns();
for(Column column:columns.values()){
	System.out.println(column);
}
//3.通过查询结果获取元数据
DataSet set = service.querys("SELECT F.ID AS '用户编号', M.ID AS ID, M.CODE AS USER_CODE FROM CRM_USER AS M LEFT JOIN CRM_USER AS F ON M.ID = F.ID");
columns = set.getMetadatas();
for(Column column:columns.values()){
	System.out.println(column);
}

最近更新 搜索 提交