【问题标题】:get next and previous rows of a given id with ormlite and android使用 ormlite 和 android 获取给定 id 的下一行和上一行
【发布时间】:2015-01-04 00:28:56
【问题描述】:

我想用 ormlite 和 android 获取给定 id 的下一行和上一行 表中的 id 不会自动递增

【问题讨论】:

    标签: java android ormlite query-builder


    【解决方案1】:

    您可以这样做: 获取所有行:

    List<MyDataObject> list = myDao.queryForAll();
    

    在列表中搜索您的对象的索引:

    int myIndex;
    for (MyDataObject obj: list) {
        if (obj.getId().equals("Myid")) {
            myIndex = list.indexOf(obj)
        }
    }
    

    获取您想要的物品:

    MyDataObject previousObject = list.get(myIndex+1);
    MyDataObject nextObject = list.get(myIndex-1);
    

    这是一种方法。另一种方法是只获取您的 id 列表,然后搜索您想要的 id(下一个和上一个 id),最后通过 id 进行查询。

    【讨论】:

    • 谢谢,它可以工作,但还有其他方法可以使用查询生成器吗?
    • 我正在搜索,但没有找到使用查询生成器的解决方案。
    【解决方案2】:

    我想用 ormlite 和 android 获取给定 id 的下一行和上一行,表中的 id 不会自动递增

    我不是 100% 确定我理解了这个问题,但您当然可以选择大于您的 id、按 id 排序且限制为 1 的项目。这将给出下一个(更大的)行。使用小于将给出上一行。

    类似:

    QueryBuilder<Foo> qb = fooDao.queryBuilder();
    // we want the items greater than this id
    qb.where().gt("id", id); // use lt for previous
    // we only want the first one
    qb.limit(1);
    // order by the id
    qb.orderBy("id");
    Foo previousFoo = qb.queryForFirst();
    

    希望这会有所帮助。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-01-21
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多