如何使用 sqlbuilder 构建 SELECT 查询?

Dmi*_*ach 5 java sql sqlbuilder

我正在使用来自http://openhms.sourceforge.net/sqlbuilder/ 的Java 和 SQLBuilder, 并尝试动态构建 SQL SELECT 查询:

SelectQuery sql = new SelectQuery();
sql.addAllColumns().addCustomFromTable("table1");
sql.addCondition(BinaryCondition.like("column1", "A"));
Run Code Online (Sandbox Code Playgroud)

但是,它会创建这样的字符串:

SELECT * FROM table1 WHERE ('column1' LIKE 'A')
Run Code Online (Sandbox Code Playgroud)

由于错误的引号 ( 'column1') 无法正常工作。我想它在.like()方法中需要一些 Column 对象。有没有办法用正确的引号创建查询?

Dmi*_*ach 4

我找到了解决方案。我必须创建一个新类Column来扩展 CustomSql并传递我的列名作为参数:

public class Column extends CustomSql {
   public Column(String str) {
      super(str);
   }
}
Run Code Online (Sandbox Code Playgroud)

进而:

SelectQuery sql = new SelectQuery();
sql.addAllColumns().addCustomFromTable("table1");
sql.addCondition(BinaryCondition.like(new Column("column1"), "A"));
Run Code Online (Sandbox Code Playgroud)

或者不创建自己的类:

SelectQuery sql = new SelectQuery();
sql.addAllColumns().addCustomFromTable("table1");
sql.addCondition(BinaryCondition.like(new CustomSql("column1"), "A"));
Run Code Online (Sandbox Code Playgroud)

它创建了以下 SQL 查询,运行良好:

SELECT * FROM table1 WHERE (column1 LIKE 'A')
Run Code Online (Sandbox Code Playgroud)