1. Jsqlparser http://jsqlparser.sourceforge.net/
JSqlParser能够解析SQL语句并它翻译成一个Java类层次。它产生的层次可以使用访问者模式导航。
2. SQLJEP http://sqljep.sourceforge.net/
SQLJEP 是一个用来解析和仿真执行SQL语句的Java类库。支持几乎所有 Oracle 和 MaxDB 的函数。SQLJEP 使用 JavaCC 来做词法分析。
使用方法示例:
ResultSet rs = statement.excute("SELECT ID,SUM,SALE_DATE from test");
ResultSetJEP sqljep = new ResultSetJEP("ID in (1,2,3) and SUM>100 and SALE_DATE>trunc(sysdate)-7");
try {
sqljep.addConstant("sysdate", new java.util.Date());
sqljep.parseExpression(rs);
whille (rs.next()) {
System.out.println(sqljep.getValue());
}
}
catch (ParseException e) {
e.printStackTrace();
}
3.SqlBuilder http://openhms.sourceforge.net/sqlbuilder/
SqlBuilder 是一个Java的类库,它试图帮你避免在Java程序内直接书写SQL查询的痛苦。你只需要使用 SqlBuilder 的方法,它就可以帮你生成对应的 SQL 数据库查询语句,例如下面一个SQL语句:
String selectQuery = "SELECT " + T1_COL1 + "," + T1_COL2 + "," + T2_COL1 + " FROM " + TABLE1 + " " + T1 + " INNER JOIN " + TABLE2 + " " + T2 + " ON (" + T1_IDCOL + " = " + T2_IDCOL + ") ORDER BY " + T1_COL1;对应的 SqlBuilder 的代码是:
String selectQuery = (new SelectQuery()) .addColumns(t1Col1, t1Col2, t2Col1).addJoin(SelectQuery.JoinType.INNER_JOIN, joinOfT1AndT2) .addOrderings(t1Col1) .validate().toString();
4.Querydsl http://www.querydsl.com/
Querydsl是一个Java开源框架用于构建类型安全的SQL查询语句。它采用API代替拼凑字符串来构造查询语句。可跟 Hibernate 和 JPA 等框架结合使用。