5

我有表 A、B、C、D、E,我正在对它们进行内部连接。
我只需要结果中的部分数据。例如,我需要A.name列,D.phoneNumber列。

我正在使用方法join()

我应该如何处理结果?我应该通过所有课程来获取我需要的所有数据吗?如果是,那么有什么简单的方法可以做到这一点,因为完成所有这些似乎有点复杂。

我应该为结果创建一个类并以某种方式将结果映射到它吗?

4

1 回答 1

8

根据 ORMlite 文档,您只能对通过外部对象字段连接的表使用 join 语句。

所以我看到的第一种方法是使用外部对象并检索您需要的所有值。例如,如果您查询表 A 和 B

QueryBuilder<A, Integer> aqb = aDao.queryBuilder();
QueryBuilder<B, Integer> bqb = bDao.queryBuilder();
List<A> results = aqb.join(bqb).query();

for (A a : results){
    String name = a.getName();
    String phone = a.getB().getPhone();
}

而 A 和 B 类看起来像这样:

....
public class A{
....
    @DatabaseField
    private String name;

    @DatabaseField(foreign = true, foreignAutoRefresh = true)
    private B b;
....        
    public B getB(){
        return b;
    }
....
    public String getName(){
        return name;
    }
}

....
public class B{
....
    @DatabaseField
    private String phone;

    public String getPhone(){
        return phone;
    }
}

我不确定这段代码是否会起作用,我只是想描述一下这个想法。

据我所知,您不能一次查询多个表。

请参阅相关的 ORMLite 文档。从库的 4.42 版本开始支持 Join 语句。

于 2013-01-19T16:54:04.097 回答