java通过SQL语句返回信息获取表名_从sql中获取表名
importjava.io.StringReader;importjava.util.List;importnet.sf.jsqlparser.parser.CCJSqlParserManager;importnet.sf.jsqlparser.statement.Statement;importnet.sf.jsqlparser.statement.delete.Delete;importnet.sf.jsqlparser.statement.insert.Insert;importnet.sf.jsqlparser.statement.replace.Replace;importnet.sf.jsqlparser.statement.select.Select;importnet.sf.jsqlparser.statement.update.Update;importnet.sf.jsqlparser.util.TablesNamesFinder;public classDataPermissionSqlUtil {private static CCJSqlParserManager pm = newCCJSqlParserManager();/*** detect table names from given table
* ATTENTION : WE WILL SKIP SCALAR SUBQUERY IN PROJECTION CLAUSE
**/
private static List getTableNames(String sql) throwsException {
List tablenames = null;
TablesNamesFinder tablesNamesFinder= newTablesNamesFinder();
Statement statement= pm.parse(newStringReader(sql));if (statement instanceofSelect) {
tablenames=tablesNamesFinder.getTableList((Select) statement);
}else if (statement instanceofUpdate) {return null;
}else if (statement instanceofDelete) {return null;
}else if (statement instanceofReplace) {return null;
}else if (statement instanceofInsert) {return null;
}returntablenames;
}public static voidmain(String[] args) {
String sql= " select d.* from (SELECT qt.qt_org_id as orgId,qt.qt_owner_id as ownerId,own.OWN_NAME as ownerName, mat.mat_barcode as matBarcode, mat.MAT_CODE as matCode, mat.MAT_NAME as matName, "
+ " m.avgDailyOutboundQty as avgDailyOutboundQty, sum(qt.QT_ONHAND_QTY) availableQty"
+ " from riv_quant qt "
+ " right join (select ONH_OWNER_ID as ownId, chl.CHL_MATERIAL_ID as matId"
+ " from riv_check_l chl "
+ " INNER JOIN riv_outbound_notice_h onh on onh.ONH_ID = chl.CHL_ONH_ID "
+ " where onh.onh_status = 90 "
+ " GROUP BY chl.CHL_MATERIAL_ID) m on m.matId = qt.QT_MATERIAL_ID "
+ " INNER JOIN riv_owner own on own.OWN_ID = qt.QT_OWNER_ID "
+ " inner join riv_material mat on mat.mat_id = qt.QT_MATERIAL_ID "
+ " GROUP BY m.ownId, m.matId) d ";try{
List tablenames =getTableNames(sql);
System.out.println(tablenames);
}catch(Exception e) {
e.printStackTrace();
}
}
}
importjava.io.StringReader;importjava.util.List;importnet.sf.jsqlparser.parser.CCJSqlParserManager;importnet.sf.jsqlparser.statement.Statement;importnet.sf.jsqlparser.statement.delete.Delete;importnet.sf.jsqlparser.statement.insert.Insert;importnet.sf.jsqlparser.statement.replace.Replace;importnet.sf.jsqlparser.statement.select.Select;importnet.sf.jsqlparser.statement.update.Update;importnet.sf.jsqlparser.util.TablesNamesFinder;public classDataPermissionSqlUtil {private static CCJSqlParserManager pm = newCCJSqlParserManager();/*** detect table names from given table * ATTENTION : WE WILL SKIP SCALAR SUBQUERY IN PROJECTION CLAUSE **/ private static List getTableNames(String sql) throwsException { List tablenames = null; TablesNamesFinder tablesNamesFinder= newTablesNamesFinder(); Statement statement= pm.parse(newStringReader(sql));if (statement instanceofSelect) { tablenames=tablesNamesFinder.getTableList((Select) statement); }else if (statement instanceofUpdate) {return null; }else if (statement instanceofDelete) {return null; }else if (statement instanceofReplace) {return null; }else if (statement instanceofInsert) {return null; }returntablenames; }public static voidmain(String[] args) { String sql= " select d.* from (SELECT qt.qt_org_id as orgId,qt.qt_owner_id as ownerId,own.OWN_NAME as ownerName, mat.mat_barcode as matBarcode, mat.MAT_CODE as matCode, mat.MAT_NAME as matName, " + " m.avgDailyOutboundQty as avgDailyOutboundQty, sum(qt.QT_ONHAND_QTY) availableQty" + " from riv_quant qt " + " right join (select ONH_OWNER_ID as ownId, chl.CHL_MATERIAL_ID as matId" + " from riv_check_l chl " + " INNER JOIN riv_outbound_notice_h onh on onh.ONH_ID = chl.CHL_ONH_ID " + " where onh.onh_status = 90 " + " GROUP BY chl.CHL_MATERIAL_ID) m on m.matId = qt.QT_MATERIAL_ID " + " INNER JOIN riv_owner own on own.OWN_ID = qt.QT_OWNER_ID " + " inner join riv_material mat on mat.mat_id = qt.QT_MATERIAL_ID " + " GROUP BY m.ownId, m.matId) d ";try{ List tablenames =getTableNames(sql); System.out.println(tablenames); }catch(Exception e) { e.printStackTrace(); } } }