91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

JPA如何查詢原生SQL轉換VO對象方式

發布時間:2021-11-22 12:28:10 來源:億速云 閱讀:206 作者:小新 欄目:開發技術

小編給大家分享一下JPA如何查詢原生SQL轉換VO對象方式,相信大部分人都還不怎么了解,因此分享這篇文章給大家參考一下,希望大家閱讀完這篇文章后大有收獲,下面讓我們一起去了解一下吧!

JPA查詢原生SQL轉換VO對象

 List<String> sqlList = RiverCourseSql.getRiverCourseSQLString(new RiverCourseDataQO());
        List<RiverCourseDataVO> riverCourseDataVO = rsvrfsrBDao.executeNativeQuery2Obj(sqlList.get(0), new PageQO(), RiverCourseDataVO.class);

查詢sql,然后執行功能方法。

 <E> List<E> executeNativeQuery2Obj(String sql, SortQO sortQO, Class<E> clz);
public <E> List<E> executeNativeQuery2Obj(String sql, SortQO sortQO, Class<E> clz) {
        Query query = this.entityManager.createNativeQuery(sql);
        this.setAliasParameter(query, sortQO);
        ((NativeQueryImpl)query.unwrap(NativeQueryImpl.class)).setResultTransformer(Transformers.aliasToBean(clz));
        List<E> resultList = query.getResultList();
        return resultList;
    }

JPA非注解方式原生sql查詢的一些注意事項

背景:DDD系統里面有復雜的聚合統計,代碼組裝數據不方便

import javax.persistence.EntityManager;
import javax.persistence.Query;
@Autowired
private EntityManager entityManager;

這里直接用自定義VO接收,sql返回結果集必須是VO的子集,不然組裝數據會報錯,說白了就是sql查詢結果的字段必須全在vo里對應,vo可以有多余字段,但sql結果不能有多余字段

String sql = "sql";
Query nativeQuery = entityManager.createNativeQuery(sql);

給sql里動態傳參設置參數 := param ,注意in后面傳數組的話,根據版本不一樣,有的要加括號,有的不要加,直接傳數據進去就行

nativeQuery.setParameter(String var1, Object var2);

這是當前不過時的方法,將sql查詢結果轉成自定義VO

Transformers可以轉成list和vo,nativeQueryImplementor也能轉成list和vo

NativeQueryImplementor nativeQueryImplementor = nativeQuery.unwrap(NativeQueryImpl.class).setResultTransformer(Transformers.aliasToBean(VO.class));
VO vo = new VO();
try {
// 這里有個坑,如果返回結果為空的話,會報錯,要捕獲這個異常,再進一步操作
    vo = (VO)nativeQueryImplementor.getSingleResult();
} catch (EntityNotFoundException e) {
    e.printStackTrace();
    return vo ;
}

目前就這些了。

以上是“JPA如何查詢原生SQL轉換VO對象方式”這篇文章的所有內容,感謝各位的閱讀!相信大家都有了一定的了解,希望分享的內容對大家有所幫助,如果還想學習更多知識,歡迎關注億速云行業資訊頻道!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

托克托县| 襄城县| 遂溪县| 噶尔县| 喀喇沁旗| 镇安县| 彭山县| 柳江县| 黎平县| 宝山区| 额济纳旗| 灌阳县| 广河县| 靖安县| 湟中县| 金堂县| 图木舒克市| 高唐县| 南丹县| 兰溪市| 郧西县| 泰安市| 金沙县| 祥云县| 长寿区| 丹棱县| 永兴县| 青州市| 栾城县| 鹿泉市| 甘泉县| 宜宾市| 缙云县| 巴塘县| 中超| 扶绥县| 唐海县| 平果县| 五寨县| 平定县| 洞头县|