因为看网上基于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();
}
}