Java Ormlite查询生成器条件
我有一个用户表单,用户指定研究标准,我必须应用它们,使用ormlite从数据库中获取正确的数据:Java Ormlite查询生成器条件,java,sql,orm,ormlite,Java,Sql,Orm,Ormlite,我有一个用户表单,用户指定研究标准,我必须应用它们,使用ormlite从数据库中获取正确的数据: boolean set = false; QueryBuilder<Client, Integer> builder = clientsDao.queryBuilder(); Where<Client, Integer> builderWhere = builder.where(); if (!tfSearchName.getText().eq
boolean set = false;
QueryBuilder<Client, Integer> builder = clientsDao.queryBuilder();
Where<Client, Integer> builderWhere = builder.where();
if (!tfSearchName.getText().equals("")) {
builderWhere.like("name", tfSearchName.getText().trim());
builderWhere.and();
set = true;
}
if (!tfSearchBalanceMin.getText().equals("")) {
builderWhere.gt("balance", tfSearchBalanceMin);
builderWhere.and();
set = true;
}
if (!tfSearchBalanceMax.getText().equals("")) {
builderWhere.lt("balance", tfSearchBalanceMax);
set = true;
}
clientTable.setItems(FXCollections.observableArrayList(
set ? clientsDao.query(builderWhere.prepare())
: clientsDao.queryForAll()));
boolean set=false;
QueryBuilder builder=clientsDao.QueryBuilder();
其中builderWhere=builder.Where();
如果(!tfSearchName.getText().equals(“”){
builderWhere.like(“name”,tfSearchName.getText().trim());
builderWhere.and();
设置=真;
}
如果(!tfSearchBalanceMin.getText()等于(“”){
builderWhere.gt(“balance”,tfSearchBalanceMin);
builderWhere.and();
设置=真;
}
如果(!tfSearchBalanceMax.getText()等于(“”){
lt(“余额”,tfSearchBalanceMax);
设置=真;
}
clientTable.setItems(FXCollections.observableArrayList(
set?clientsDao.query(builderWhere.prepare())
:clientsDao.queryForAll());
查询生成器的问题是,最后总是有一个和子句,因此总是抛出一个expection
我想知道一种使用条件生成sql语句的好方法,就像我在代码中所做的那样
PS:抱歉英语不好您可以尝试使用公共Where和(int numClauses)
例如:
int andClauses= 0; // number of clauses that should be connected with "and" operation
QueryBuilder<Client, Integer> builder = clientsDao.queryBuilder();
Where<Client, Integer> builderWhere = builder.where();
if (!TextUtils.isEmpty(tfSearchName.getText())) {
builderWhere.like("name", tfSearchName.getText().trim());
andClauses++;
}
if (!TextUtils.isEmpty(tfSearchBalanceMin.getText())) {
builderWhere.gt("balance", tfSearchBalanceMin);
andClauses++;
}
if (!TextUtils.isEmpty(tfSearchBalanceMax.getText())) {
builderWhere.lt("balance", tfSearchBalanceMax);
andClauses++;
}
clientTable.setItems(FXCollections.observableArrayList(
andClauses > 0 ? clientsDao.query(builderWhere.and(andClauses).prepare())
: clientsDao.queryForAll()));
int和子句=0;//应与“and”操作关联的子句数
QueryBuilder builder=clientsDao.QueryBuilder();
其中builderWhere=builder.Where();
如果(!TextUtils.isEmpty(tfSearchName.getText())){
builderWhere.like(“name”,tfSearchName.getText().trim());
AND子句++;
}
如果(!TextUtils.isEmpty(tfSearchBalanceMin.getText())){
builderWhere.gt(“balance”,tfSearchBalanceMin);
AND子句++;
}
如果(!TextUtils.isEmpty(tfSearchBalanceMax.getText())){
lt(“余额”,tfSearchBalanceMax);
AND子句++;
}
clientTable.setItems(FXCollections.observableArrayList(
AndClaires>0?clientsDao.query(builderWhere.and(AndClaires.prepare())
:clientsDao.queryForAll());