ORMLite - 如何处理连接的结果

时间:2013-01-12 21:43:27

标签: android ormlite

我有表A,B,C,D,E,我正在进行内部联接 我只需要从结果中获得部分数据。例如,我需要A.name列,D.phoneNumber列。

我正在使用方法join()

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

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

1 个答案:

答案 0 :(得分: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;
    }
}

我不确定这段代码是否有效,我只是想描述一下这个想法。

据我所知,您无法一次查询多个表。

请参阅related ORMLite documentation。 从库的4.42版开始,支持Join语句。