我有表A,B,C,D,E,我正在进行内部联接
我只需要从结果中获得部分数据。例如,我需要A.name
列,D.phoneNumber
列。
我正在使用方法join()
。
我该如何处理结果?我应该完成所有课程,以获得我需要的所有数据吗?如果是,那么这样做的简单方法是什么,因为通过所有这些看起来有点复杂。
我应该为结果创建一个类,并以某种方式将结果映射到它吗?
答案 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语句。