因爲看網上基於play多表查詢相關的比較少,最近有項目用到了,以爲多表查詢這一塊有必要和你們分享一下sql
基於play1.4.5spa
@Entity
@Table("student") public class Student extends Model { @Id public Integer id; public String name;
public Integer sex;
}
@Entity
@Table("teacher") public class Person extends Model { @Id public Integer id; public Integer studentId;
public String teacherName;
}
//方法一:orm
//返回 List<Object[]>get
public CommResult findUserList(Integer pageIndex,Integer pageSize){it
try{io
String sql = " select s.name,s.sex,t.teacherName from student s inner join teacher t on s.id=t.studentId ";form
List<Map<Object,Object>> lists = new ArrayList<>();
List<Object[]> lists = JPA.em().createNativeQuery(sql).getResultList();class
for(Object[] list:list){ List
//循環select
Map<Object,Object> map = new LinkedHashMap<>();
map.put("name",list[0]);
..............
lists.add(map);
}
return CommResult.ok(msg:"",lists);
}catch(Exception e){
e.printStackTrace();
}
}
//方法二:
//返回 List<Map<String,String>>
public CommResult findUserList2(Integer pageIndex,Integer pageSize){
try{
String sql = " select s.name,s.sex,t.teacherName from student s inner join teacher t on s.id=t.studentId ";
Query query = JPA.em().createNativeQuery(sql);
//直接將獲取的多表數據轉化爲Map
List<Map<String,String>> lists = (List<Map<String,String>>)query.unwrap(SQLQuery.class).setResultTransformer(Transformers.ALIAS_TO_ENTITY_MAP).list();
return CommResult.ok(msg:"",lists);
}catch(Exception e){
e.printStackTrace();
}
}