SpringBoot2.0中JPA封装自定义实体、页面数据实体

原创 Laughing  2019-09-24 15:31  阅读 64 次 评论 0 条

方案一(推荐方案):

  1. List<Map<String, Object>> list = query.unwrap(NativeQuery.class).setResultTransformer(Transformers.ALIAS_TO_ENTITY_MAP).getResultList();  
  2. return JSON.parseArray(JSON.toJSONString(list), clz);  

方案二:

  1. /** 
  2.      * 转换成页面需要的实体对象 
  3.      * 
  4.      * @param list 
  5.      * @param clazz 实体构造的参数个数、类型必须与查询返回的结果集一致 
  6.      * @param <T> 
  7.      * @return 
  8.      * @throws Exception 
  9.      */  
  10.     public static <T> List<T> transformEntityVo(List<Object[]> list, Class<T> clazz) throws Exception {  
  11.         List<T> listRecords = new ArrayList<T>();  
  12.         if (null == list || list.isEmpty()) return listRecords;  
  13.    
  14.         Object[] co = list.get(0);  
  15.         Class[] c2 = new Class[co.length];  
  16.         for (int i = 0; i < co.length; i++) {  
  17.             c2[i] = co[i].getClass();  
  18.         }  
  19.         for (Object[] o : list) {  
  20.             Constructor<T> constructor = clazz.getConstructor(c2);  
  21.             listRecords.add(constructor.newInstance(o));  
  22.         }  
  23.         return listRecords;  
  24.     }  
使用方式
  1. XtDataUtil.transformEntityVo(entityManager.createNativeQuery(sql.toString()).getResultList(), Entity.class);  

历史上的今天:

本文地址:https://www.lisen.me/jpa-encapsulates-custom-entities-and-page-data-entities-in-springboot-2-0.html
版权声明:本文为原创文章,版权归 木子网 所有,欢迎分享本文,转载请保留出处!
NEXT:已经是最新一篇了

发表评论


表情