SqlBuilder是一个SQL生成库,它用于减少Java程序中生成SQL查询的负担。它使用一种编程语言(Java)来生成另一种语言的代码(即SQL)。它的特点是在轻量级、易于使用的Java对象中封装SQL语法,遵循类似于StringBuilder 的 builder范例。它能够改变很多常见的SQL语法和运行时错误到Java编译时错误。
嵌入在Java程序中的一个很简单的SQL SELECT查询代码,如下:
// assuming a variety of pre
defined string constants
String selectQuery = "SELECT " + T1_COL1 + "," + T1_COL2 + "," +
&">nbsp; T2_COL1 + " FROM " + TABLE1 + " " + T1 + " INNER JOIN " +
TABLE2 + " " + T2 + " ON (" + T1_IDCOL + " = " + T2_IDCOL +
") ORDER BY " + T1_COL1;
试图改善的代码如下:
String selectQuery = MessageFormat.format(
"SELECT {0},{1},{2} FROM {3} {4} INNER JOIN {5} {6} ON ({7} = {8}) " +
"ORDER BY {9}",
T1_COL1, T2_COL2, T2_COL1, TABLE1, T1, TABLE2, T2,
T1_IDCOL, T2_IDCOL, T1_COL1);
SqlBuilder 类对应的代码如下:
// assuming these objects have already been created
Table table1, table2;
Column t1Col1, t1Col2, t2Col1;
Join joinOfT1AndT2;
String selectQuery =
(new SelectQuery())
.addColumns(t1Col1, t1Col2, t2Col1)
.addJoin(SelectQuery.JoinType.INNER_JOIN, joinOfT1AndT2)
.addOrderings(t1Col1)
.validate().toString();
SqlBuilder (OpenHMS) 2.0.10版本主要是添加支持SQL构造的灵活性。相关的SQL构造无别名处理表,DbTable现在可以建造一个明确的别名。添加 SelectQuery addCustomJoin来允许完全17813.html">可定制的JOIN子句。ComboCondition、UnaryCondition、BinaryCondition 和 ComboExpression,现在都可以定制运算符。现在所有的条件和表达式的选项来禁用包装括号。
软件信息:http://openhms.sourceforge.net/sqlbuilder/
下载地址:http://nchc.dl.sourceforge.net/project/openhms/sqlbuilder/sqlbuilder%202.0.10/sqlbuilder-2.0.10.jar