我创建了一组用于在各种数据库管理系统上构建SQL命令和查询的类。 所有课程都支持流畅的编程,到目前为止工作正常。
主类叫做SQL,有静态方法INSERT()UPDATE()SELECT()... 所有这些方法都返回我的类的新实例SQLInsert(),SQLUpdate(),SQLSelect()......
为了使ist尽可能短,我删除了所有不必要的东西,以便了解这些类是如何工作的。
我的课程SQL
public class SQL {
private SQL() { }
public static SQLInsert INSERT() { return new SQLInsert(); }
public static SQLUpdate UPDATE() { return new SQLUpdate(); }
// ...
}
我的类SQLInsert
public class SQLInsert {
// properties
private String tableName;
private final ArrayList<String> colNames = new ArrayList();
// constructor
public SQLInsert() { }
// fluent methods
public SQLInsert TABLE(String tbl) {
tableName = tbl;
return this;
}
public SQLInsert COLUMNS(String... cols) {
for (String col : cols) { colNames.add(columnname); }
return this;
}
// and so on
}
使用这些类我可以这样编码:
SQL.INSERT().TABLE("test").COLUMNS("col1","col2").VALUES("test",100).execute(connection);
ResultSet rs = SQL.SELECT().COLUMNS("*").FROM("test").query(connection)
我的所有课程都只提供在上下文中有意义的方法。 SQLInsert没有方法WHERE(),但是方法SELECT()用于定义子选择。
SQL.INSERT().TABLE("test").SELECT(
SQL.SELECT().COLUMNS(...).FROM(...)
);
是一个有效的陈述。
但是现在我需要SQL-CREATE语句的新类。我想使用我的新课程如下
SQL.CREATE().TABLE(name). ...
SQL.CREATE().INDEX(name). ...
我的班级SQLCreate
public class SQLCreate {
public SQLCreate() {}
public static SQLCreateIndex INDEX(String name) {
return new SQLCreateIndex(name);
}
public static SQLCreateTable TABLE(String name) {
return new SQLCreateTable(name);
}
}
不幸的是,似乎没有像预期的那样工作。 键入SQL.CREATE()后。我无法访问方法INDEX() 测试了很多,但没有任何作用。任何人都可以给我正确的提示吗?
THX。