com.j256.ormlite.stmt.Where类的使用及代码示例

x33g5p2x  于2022-02-03 转载在 其他  
字(12.4k)|赞(0)|评价(0)|浏览(153)

本文整理了Java中com.j256.ormlite.stmt.Where类的一些代码示例,展示了Where类的具体用法。这些代码示例主要来源于Github/Stackoverflow/Maven等平台,是从一些精选项目中提取出来的代码,具有较强的参考意义,能在一定程度帮忙到你。Where类的具体详情如下:
包路径:com.j256.ormlite.stmt.Where
类名称:Where

Where介绍

[英]Manages the various clauses that make up the WHERE part of a SQL statement. You get one of these when you call StatementBuilder#where or you can set the where clause by calling StatementBuilder#setWhere.

Here's a page with a good tutorial of SQL commands.

To create a query which looks up an account by name and password you would do the following:

QueryBuilder<Account, String> qb = accountDao.queryBuilder(); 
Where where = qb.where(); 
// the name field must be equal to "foo" 
where.eq(Account.NAME_FIELD_NAME, "foo"); 
// and 
where.and(); 
// the password field must be equal to "_secret" 
where.eq(Account.PASSWORD_FIELD_NAME, "_secret"); 
PreparedQuery<Account, String> preparedQuery = qb.prepareQuery();

In this example, the SQL query that will be generated will be approximately:

SELECT * FROM account WHERE (name = 'foo' AND passwd = '_secret')

If you'd rather chain the methods onto one line (like StringBuilder), this can also be written as:

queryBuilder.where().eq(Account.NAME_FIELD_NAME, "foo").and().eq(Account.PASSWORD_FIELD_NAME, "_secret");

If you'd rather use parens and the like then you can call:

Where where = queryBuilder.where(); 
where.and(where.eq(Account.NAME_FIELD_NAME, "foo"), where.eq(Account.PASSWORD_FIELD_NAME, "_secret"));

All three of the above call formats produce the same SQL. For complex queries that mix ANDs and ORs, the last format will be necessary to get the grouping correct. For example, here's a complex query:

Where where = queryBuilder.where(); 
where.or(where.and(where.eq(Account.NAME_FIELD_NAME, "foo"), where.eq(Account.PASSWORD_FIELD_NAME, "_secret")), 
where.and(where.eq(Account.NAME_FIELD_NAME, "bar"), where.eq(Account.PASSWORD_FIELD_NAME, "qwerty")));

This produces the following approximate SQL:

SELECT * FROM account WHERE ((name = 'foo' AND passwd = '_secret') OR (name = 'bar' AND passwd = 'qwerty'))

[中]

代码示例

代码示例来源:origin: magefree/mage

public void buildQuery(QueryBuilder qb) throws SQLException {
  Where where = qb.where();
  where.eq("nightCard", false);
  where.eq("splitCardHalf", false);
  int clausesCount = 2;
  if (name != null) {
    where.like("name", new SelectArg('%' + name + '%'));
    clausesCount++;
    where.like("name", new SelectArg(nameExact));
    clausesCount++;
    where.like("rules", new SelectArg('%' + rules + '%'));
    clausesCount++;
    where.eq("doubleFaced", doubleFaced);
    clausesCount++;
    where.eq("rarity", rarity);
    where.or(rarities.size());
    clausesCount++;
    where.eq("setCode", setCode);
    where.or(setCodes.size());
    clausesCount++;
      where.like("types", new SelectArg('%' + type.name() + '%'));

代码示例来源:origin: magefree/mage

public List<CardInfo> getMissingCards(List<String> classNames) {
  try {
    QueryBuilder<CardInfo, Object> queryBuilder = cardDao.queryBuilder();
    queryBuilder.where().not().in("className", classNames);
    return cardDao.query(queryBuilder.prepare());
  } catch (SQLException ex) {
    Logger.getLogger(CardRepository.class).error("Error getting missing cards from DB : " + ex);
  }
  return Collections.emptyList();
}

代码示例来源:origin: magefree/mage

public List<TableRecord> getAfter(long endTimeMs) {
  try {
    QueryBuilder<TableRecord, Object> qb = dao.queryBuilder();
    qb.where().gt("endTimeMs", endTimeMs);
    qb.orderBy("endTimeMs", true);
    return dao.query(qb.prepare());
  } catch (SQLException ex) {
    Logger.getLogger(TableRecordRepository.class).error("Error getting table_records from DB - ", ex);
  }
  return null;
}

代码示例来源:origin: magefree/mage

public CardInfo findCard(String setCode, String cardNumber) {
  try {
    QueryBuilder<CardInfo, Object> queryBuilder = cardDao.queryBuilder();
    queryBuilder.limit(1L).where().eq("setCode", new SelectArg(setCode)).and().eq("cardNumber", cardNumber).and().eq("nightCard", false);
    List<CardInfo> result = cardDao.query(queryBuilder.prepare());
    if (!result.isEmpty()) {
      return result.get(0);
    }
  } catch (SQLException ex) {
    Logger.getLogger(CardRepository.class).error("Error finding card from DB : " + ex);
  }
  return null;
}

代码示例来源:origin: org.mycontroller.standalone/mycontroller-core

@Override
public long countOf(AGGREGATION_TYPE aggregationType, long start, long end) {
  QueryBuilder<MetricsBatteryUsage, Object> queryBuilder = getDao().queryBuilder();
  try {
    return queryBuilder.where().gt(MetricsBatteryUsage.KEY_TIMESTAMP, start).and()
        .le(MetricsBatteryUsage.KEY_TIMESTAMP, end).and()
        .eq(MetricsBatteryUsage.KEY_AGGREGATION_TYPE, aggregationType).countOf();
  } catch (Exception ex) {
    _logger.error("Unable to execute countOf query", ex);
    return -1;
  }
}

代码示例来源:origin: org.mycontroller.standalone/mycontroller-core

@Override
  public boolean isRecordFound(AGGREGATION_TYPE aggregationType, long start, long end) {
    QueryBuilder<MetricsBatteryUsage, Object> queryBuilder = getDao().queryBuilder();
    try {
      return queryBuilder.where().gt(MetricsBatteryUsage.KEY_TIMESTAMP, start).and()
          .le(MetricsBatteryUsage.KEY_TIMESTAMP, end).and()
          .eq(MetricsBatteryUsage.KEY_AGGREGATION_TYPE, aggregationType).queryForFirst() != null;
    } catch (Exception ex) {
      _logger.error("Unable to execute countOf query", ex);
      return true;
    }
  }
}

代码示例来源:origin: org.mycontroller.standalone/mycontroller-core

@Override
public List<MetricsCounterTypeDevice> getAggregationRequiredVariableIds(AGGREGATION_TYPE aggregationType,
    Long fromTimestamp, Long toTimestamp) {
  QueryBuilder<MetricsCounterTypeDevice, Object> queryBuilder = this.getDao().queryBuilder();
  try {
    return queryBuilder.distinct().selectColumns(MetricsCounterTypeDevice.KEY_SENSOR_VARIABLE_ID)
        .where().eq(MetricsCounterTypeDevice.KEY_AGGREGATION_TYPE, aggregationType).and()
        .gt(MetricsCounterTypeDevice.KEY_TIMESTAMP, fromTimestamp).and()
        .le(MetricsCounterTypeDevice.KEY_TIMESTAMP, toTimestamp)
        .query();
  } catch (SQLException ex) {
    _logger.error("Exception,", ex);
    return null;
  }
}

代码示例来源:origin: org.mycontroller.standalone/mycontroller-core

@Override
public List<OperationTable> getByTimerIdEnabled(Integer timerId) {
  List<Integer> ids = DaoUtils.getOperationTimerMapDao().getOperationIdsByTimerId(timerId);
  try {
    return this.getDao().queryBuilder().where().in(OperationTable.KEY_ID, ids).and()
        .eq(OperationTable.KEY_ENABLED, true).query();
  } catch (SQLException ex) {
    _logger.error("Exception,", ex);
  }
  return null;
}

代码示例来源:origin: magefree/mage

public void remove(final String userName) {
  try {
    DeleteBuilder<AuthorizedUser, Object> db = dao.deleteBuilder();
    db.where().eq("name", new SelectArg(userName));
    db.delete();
  } catch (SQLException ex) {
    Logger.getLogger(AuthorizedUserRepository.class).error("Error removing a user from DB - ", ex);
  }
}

代码示例来源:origin: org.mycontroller.standalone/mycontroller-core

@Override
public List<MetricsBinaryTypeDevice> getAll(MetricsBinaryTypeDevice metric) {
  try {
    QueryBuilder<MetricsBinaryTypeDevice, Object> queryBuilder = this.getDao().queryBuilder();
    Where<MetricsBinaryTypeDevice, Object> where = queryBuilder.where();
    where.eq(MetricsBinaryTypeDevice.KEY_SENSOR_VARIABLE_ID, metric.getSensorVariable().getId());
    if (metric.getStart() != null) {
      where.and().ge(MetricsBinaryTypeDevice.KEY_TIMESTAMP, metric.getStart());
    }
    if (metric.getEnd() != null) {
      where.and().le(MetricsBinaryTypeDevice.KEY_TIMESTAMP, metric.getEnd());
    }
    queryBuilder.orderBy(MetricsBinaryTypeDevice.KEY_TIMESTAMP, true);
    return queryBuilder.query();
  } catch (SQLException ex) {
    _logger.error("unable to get, metric:{}", metric, ex);
  }
  return null;
}

代码示例来源:origin: org.mycontroller.standalone/mycontroller-core

@Override
public List<Settings> getAll(Integer userId, String key) {
  try {
    return this.getDao().queryBuilder().where().eq(Settings.KEY_USER_ID, userId).and()
        .eq(Settings.KEY_KEY, key).query();
  } catch (SQLException ex) {
    _logger.error("unable to get item for userId:{}, Key:{}", userId, key, ex);
    return null;
  }
}

代码示例来源:origin: tianshaojie/AndroidFine

return articleDaoOpe.queryBuilder().where().eq("user_id", userId)
      .query();
} catch (SQLException e)

代码示例来源:origin: j256/ormlite-core

@Test
public void testOrManyOne() throws Exception {
  Where<Foo, String> where = new Where<Foo, String>(createTableInfo(), null, databaseType);
  int val1 = 1312313;
  where.eq(Foo.VAL_COLUMN_NAME, val1);
  where.or(1);
  StringBuilder whereSb = new StringBuilder();
  where.appendSql(null, whereSb, new ArrayList<ArgumentHolder>());
  StringBuilder sb = new StringBuilder();
  sb.append('(');
  databaseType.appendEscapedEntityName(sb, Foo.VAL_COLUMN_NAME);
  // NOTE: they are done in reverse order
  sb.append(" = ").append(val1);
  sb.append(" ) ");
  assertEquals(sb.toString(), whereSb.toString());
}

代码示例来源:origin: QuickBlox/q-municate-android

public void deleteTempMessages(List<Long> dialogOccupantsIdsList) {
  try {
    DeleteBuilder<Message, Long> deleteBuilder = dao.deleteBuilder();
    Where<Message, Long> where = deleteBuilder.where();
    where.and(
        where.in(DialogOccupant.Column.ID, dialogOccupantsIdsList),
        where.or(
            where.eq(Message.Column.STATE, State.TEMP_LOCAL),
            where.eq(Message.Column.STATE, State.TEMP_LOCAL_UNREAD)
        )
    );
    if (deleteBuilder.delete() > 0) {
      //TODO VT need to think how to send IDs to observers
      notifyObserversDeletedById(dialogOccupantsIdsList);
    }
  } catch (SQLException e) {
    ErrorUtils.logError(e);
  }
}

代码示例来源:origin: j256/ormlite-core

@SuppressWarnings("unchecked")
@Test
public void testUseOfOrMany() throws Exception {
  Dao<Foo, Integer> dao = createDao(Foo.class, true);
  assertEquals(0, dao.countOf());
  Foo foo1 = new Foo();
  int val = 1231231;
  foo1.val = val;
  assertEquals(1, dao.create(foo1));
  Foo foo2 = new Foo();
  foo2.val = val + 1;
  assertEquals(1, dao.create(foo2));
  Where<Foo, Integer> where = dao.queryBuilder().where();
  where.or(where.eq(Foo.ID_COLUMN_NAME, foo1.id), where.eq(Foo.ID_COLUMN_NAME, foo2.id),
      where.eq(Foo.VAL_COLUMN_NAME, val), where.eq(Foo.VAL_COLUMN_NAME, foo2.val));
  List<Foo> results = where.query();
  assertEquals(2, results.size());
  assertEquals(foo1.id, results.get(0).id);
  assertEquals(foo2.id, results.get(1).id);
}

代码示例来源:origin: j256/ormlite-core

@Test(expected = IllegalStateException.class)
public void testAlreadyNeedsClause() throws Exception {
  Where<Foo, String> where = new Where<Foo, String>(createTableInfo(), null, databaseType);
  where.eq(Foo.VAL_COLUMN_NAME, "bar");
  where.and();
  where.and();
  StringBuilder sb = new StringBuilder();
  where.appendSql(null, sb, null);
}

代码示例来源:origin: mil.nga.geopackage/geopackage-core

/**
 * Delete by table name, either feature or tile table name
 * 
 * @param tableName
 *            table name, feature or tile
 * @return rows deleted
 * @throws SQLException
 *             upon failure
 */
public int deleteByTableName(String tableName) throws SQLException {
  DeleteBuilder<FeatureTileLink, FeatureTileLinkKey> db = deleteBuilder();
  db.where().eq(FeatureTileLink.COLUMN_FEATURE_TABLE_NAME, tableName)
      .or().eq(FeatureTileLink.COLUMN_TILE_TABLE_NAME, tableName);
  PreparedDelete<FeatureTileLink> deleteQuery = db.prepare();
  int deleted = delete(deleteQuery);
  return deleted;
}

代码示例来源:origin: j256/ormlite-core

@Test(expected = IllegalArgumentException.class)
public void testInnerQuerySubQueryWhere() throws Exception {
  Dao<Foo, Integer> fooDao = createDao(Foo.class, true);
  fooDao.queryBuilder()
      .where()
      .in(Foo.ID_COLUMN_NAME,
          // this is a problem because eq() returns a Where not a QueryBuilder
          fooDao.queryBuilder().selectColumns(Foo.ID_COLUMN_NAME).where().eq(Foo.ID_COLUMN_NAME, 1))
      .query();
}

代码示例来源:origin: magefree/mage

public Set<String> getNonLandAndNonCreatureNames() {
  Set<String> names = new TreeSet<>();
  try {
    QueryBuilder<CardInfo, Object> qb = cardDao.queryBuilder();
    qb.distinct().selectColumns("name");
    Where where = qb.where();
    where.and(
        where.not().like("types", '%' + CardType.CREATURE.name() + '%'),
        where.not().like("types", '%' + CardType.LAND.name() + '%')
    );
    List<CardInfo> results = cardDao.query(qb.prepare());
    for (CardInfo card : results) {
      int result = card.getName().indexOf(" // ");
      if (result > 0) {
        names.add(card.getName().substring(0, result));
        names.add(card.getName().substring(result + 4));
      } else {
        names.add(card.getName());
      }
    }
  } catch (SQLException ex) {
    Logger.getLogger(CardRepository.class).error("Error getting non-land and non-creature names from DB : " + ex);
  }
  return names;
}

代码示例来源:origin: zulip/zulip-android

public static MessageRange getRangeContaining(int value,
                       RuntimeExceptionDao<MessageRange, Integer> messageRangeDao) {
  List<MessageRange> ranges;
  try {
    ranges = messageRangeDao.queryBuilder().where().le("low", value)
        .and().ge("high", value).query();
    if (ranges.size() == 1) {
      return ranges.get(0);
    } else if (!ranges.isEmpty()) {
      Log.wtf("rangecheck",
          "Expected one range, got " + ranges.size()
              + " when looking for ID " + value);
    }
  } catch (SQLException e) {
    // This is nonfatal.
    ZLog.logException(e);
  }
  return null;
}

相关文章