日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > java >内容正文

java

java解析表字段_从SQL / HQL Java解析表和列名

發布時間:2023/12/19 java 37 豆豆
生活随笔 收集整理的這篇文章主要介紹了 java解析表字段_从SQL / HQL Java解析表和列名 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

小編典典

您可以使用 TableNamesFinder 來遍歷所有列。正如您在結果列表中看到的那樣, TableNamesFinder 不會遍歷 Columns的 所有出現,因為它不是必需的。因此,這里也必須完成遍歷實現,而我沒有。

您可以使用 JSqlParser AST-節點功能 來獲取所有列。對于特定的產品,JSqlParser為解析樹生成節點。 列 就是其中之一。

為了完成實現,必須收集所有列并使該列表與眾不同(大小寫,表等)。

String sql = "SELECT * FROM ( ( SELECT TBL.ID AS rRowId, TBL.NAME AS name, TBL.DESCRIPTION as description, TBL.TYPE AS type, TBL1.SHORT_NAME AS shortName FROM ROLE_TBL TBL WHERE ( TBL.TYPE = 'CORE' OR TBL1.SHORT_NAME = 'TNG' AND TBL.IS_DELETED <> 1 ) ) MINUS ( SELECT TBL.ID AS rRowId, TBL.NAME AS name, TBL.DESCRIPTION as description, TBL.TYPE AS type, TBL3.SHORT_NAME AS shortName,TBL3.NAME AS tenantName FROM ROLE_TBL TBL INNER JOIN TYPE_ROLE_TBL TBL1 ON TBL.ID=TBL1.ROLE_FK LEFT OUTER JOIN TNT_TBL TBL3 ON TBL3.ID = TBL.TENANT_FK LEFT OUTER JOIN USER_TBL TBL4 ON TBL4.ID = TBL1.USER_FK WHERE ( TBL4.ID =771100 AND TBL.IS_DELETED <> 1 ) ) ) ORDER BY name ASC";

System.out.println("using TableNamesFinder to get column names");

Statement statement = CCJSqlParserUtil.parse(sql);

Select selectStatement = (Select) statement;

TablesNamesFinder tablesNamesFinder = new TablesNamesFinder() {

@Override

public void visit(Column tableColumn) {

System.out.println(tableColumn);

}

};

tablesNamesFinder.getTableList(selectStatement);

System.out.println("-------------------------------------------");

System.out.println("using ast nodes to get column names");

SimpleNode node = (SimpleNode) CCJSqlParserUtil.parseAST(sql);

node.jjtAccept(new CCJSqlParserDefaultVisitor() {

@Override

public Object visit(SimpleNode node, Object data) {

if (node.getId() == CCJSqlParserTreeConstants.JJTCOLUMN) {

System.out.println(node.jjtGetValue());

return super.visit(node, data);

} else {

return super.visit(node, data);

}

}

}, null);

必須記住,JSqlParser只是一個解析器。因此,如果不像(table.column)中那樣指定列表名稱,就不可能獲得列表名稱。為了實現此目的,數據庫模式必須可用。如果您查看以下內容,這將變得清楚:

select a from table1, table2

這是有效的SQL。

2020-11-01

創作挑戰賽新人創作獎勵來咯,堅持創作打卡瓜分現金大獎

總結

以上是生活随笔為你收集整理的java解析表字段_从SQL / HQL Java解析表和列名的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。