package jef.database.jdbc.statement; import jef.common.log.LogUtil; import jef.database.DbUtils; import jef.database.jsqlparser.parser.ParseException; import jef.database.jsqlparser.statement.select.Select; import jef.database.jsqlparser.statement.select.Union; /** * 判断一个SELECT SQL语句是否为union语句 * @author jiyi * */ public abstract class UnionJudgement { public abstract boolean isUnion(String sql); /** * 缺省实现,使用内置解析器(较慢) */ public static final UnionJudgement DEFAULT=new UnionJudgement(){ @Override public boolean isUnion(String sql) { try { Select select = DbUtils.parseNativeSelect(sql); return (select.getSelectBody() instanceof Union); } catch (ParseException e) { LogUtil.warn("Druid parser Error:", e); return false; } } }; /** * Is Druid available? * @return true if druid parser is available. */ public static boolean isDruid(){ try{ Class.forName("com.alibaba.druid.sql.dialect.sqlserver.parser.SQLServerStatementParser"); return true; }catch(ClassNotFoundException e){ return false; } } }