当使用for循环生成条件时,如何在ormlite中编写查询

Dee*_*oel 0 java ormlite

我在ormlite中写了一个查询,如下所示

Where<Advertisement, Integer> where = queryBuilder.where();
where.and(
    where.between("latitude", pLatitude - APPOXIMATION_FACTOR,
        pLatitude + APPOXIMATION_FACTOR),
    where.between("longitude", pLongitude - APPOXIMATION_FACTOR,
        pLongitude + APPOXIMATION_FACTOR)
      .and().between("width", pWidth - APPOXIMATION_FACTOR,
        pWidth + APPOXIMATION_FACTOR),
);
Run Code Online (Sandbox Code Playgroud)

还有一个和这个

for (int iterator = 0; iterator < moduleList.size(); iterator++) {
    where.eq("id", moduleList.get(iterator).getmId());
    if (iterator != advertisementList.size() - 1){
        whereForModuleID.or();
    }
}
Run Code Online (Sandbox Code Playgroud)

但在这种情况下,我被困在如何写查询

寻求帮助

Gra*_*ray 7

第二种情况下,我将使用where.in(String,Iterable)方法.你应该做这样的事情:

List<Integer> idList = new ArrayList<Integer>();
for (Module module : moduleList) {
    idList.add(module.getmId());
}
where.in("id", idList);
Run Code Online (Sandbox Code Playgroud)

这变成了一个SQL查询,如:

SELECT * `foo` WHERE `id` IN (7, 17, 1, 34)
Run Code Online (Sandbox Code Playgroud)

以下是有关以下内容的文档where.in():

http://ormlite.com/docs/where-in

就原始问题而言,请参阅此答案where.and(int)以及or(int)方法.