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(); } } }
经验分享 程序员 微信小程序 职场和发展