记录一下根据查询SQL获取其中所有表名的方法
因为使用的是比较暴力的拆解方式,所以不能保证效率问题,仅用来解决部分业务逻辑问题
也因为是比较暴力的拆解,所以理论上哪种数据库的SQL都没有什么影响的,只要SQL是可执行的,都可以满足
直接贴代码
import org.apache.commons.lang.StringUtils;
import java.util.ArrayList;
import java.util.HashSet;
import java.util.List;
import java.util.Set;
/**
* 从写定的SQL中解析表名
*
* @author chenjunxu
* @date 2018/12/27
*/
public class SQLMain {
private static final String FROM_LOWER = "from";
private static final String FROM_UPPER = "FROM";
private static final String[] SPLIT_KEY = {"select", "SELECT", " where ", " WHERE "};
private static final String[] JOIN_KEY = {",", " join ", " JOIN "};
public static void main(String[] args) {
// String sql = "select a, b, c from user u,org o where u.id = o.uid and u.id in (select id from user