关于play framework多表查询返回vo转换为Map

由于看网上基于play多表查询相关的比较少,最近有项目用到了,觉得多表查询这一块有必要和大家分享一下

基于play1.4.5

@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;

}


//方法一:

//返回 List<Object[]>

public CommResult    findUserList(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 ";

      List<Map<Object,Object>> lists = new ArrayList<>();

          List<Object[]> lists = JPA.em().createNativeQuery(sql).getResultList();

          for(Object[] list:list){    

                //循环

             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();

      }

}

 

 

猜你喜欢

转载自www.cnblogs.com/wanjiafu/p/9278079.html