我从
http://openhms.sourceforge.net/sqlbuilder/开始使用Java和SQLBuilder,我正在尝试动态地构建SQL SELECT查询:
SelectQuery sql = new SelectQuery();
sql.addAllColumns().addCustomFromTable("table1");
sql.addCondition(BinaryCondition.like("column1", "A"));
但是,它会创建如下字符串:
SELECT * FROM table1 WHERE ('column1' LIKE 'A')
由于引号错误(‘column1’),它无法正常工作.我想它在.like()方法中需要一些Column对象.
有没有办法用适当的引号创建查询?
最佳答案 我找到了解决方案.我不得不创建新的类Column,它扩展了CustomSql并将我的列名称作为参数传递:
public class Column extends CustomSql {
public Column(String str) {
super(str);
}
}
然后:
SelectQuery sql = new SelectQuery();
sql.addAllColumns().addCustomFromTable("table1");
sql.addCondition(BinaryCondition.like(new Column("column1"), "A"));
或者不创建自己的类:
SelectQuery sql = new SelectQuery();
sql.addAllColumns().addCustomFromTable("table1");
sql.addCondition(BinaryCondition.like(new CustomSql("column1"), "A"));
它创建以下SQL查询,工作正常:
SELECT * FROM table1 WHERE (column1 LIKE 'A')