Spring Data JPA原生SQL查詢

來源:互聯網
上載者:User

標籤:obj   null   his   entry   asn   ram   data   equals   .class   

package com.wanda.cms.dao.repository;
import org.springframework.stereotype.Repository;
import javax.persistence.EntityManager;
import javax.persistence.PersistenceContext;
import javax.persistence.Query;
import java.math.BigInteger;
import java.util.*;

/**
* 構建複雜查詢
* @author lchb
*/
@Repository
public class NativeQueryRepository{

@PersistenceContext
private EntityManager entityManager;

/**
* 根據sql查詢
* @param sql
* @param resultClass
* @param <T>
* @return
*/
public <T> List<T> findBySql(String sql,Class resultClass){
Query nativeQuery=null;
if(resultClass!=null && !resultClass.equals(Object.class)) {
nativeQuery = entityManager.createNativeQuery(sql, resultClass);
}else{
nativeQuery = entityManager.createNativeQuery(sql);
}

List rows = nativeQuery.getResultList();
List<T> resultList=new ArrayList<T>();
for (Object obj : rows) {
T row=(T)obj;
resultList.add(row);
}
return resultList;
}

/**
* 根據參數查詢
* @param sql
* @param parameters
* @param resultClass
* @param <T>
* @return
*/
public <T> List<T> findBySql(String sql,Map<String,Object> parameters,Class resultClass){
Query nativeQuery=null;
if(resultClass!=null && !resultClass.equals(Object.class)) {
nativeQuery = entityManager.createNativeQuery(sql, resultClass);
}else{
nativeQuery = entityManager.createNativeQuery(sql);
}

Iterator<Map.Entry<String,Object>> entries = parameters.entrySet().iterator();
while (entries.hasNext()) {
Map.Entry<String,Object> entry = entries.next();
nativeQuery.setParameter(entry.getKey(),entry.getValue());
}

List rows = nativeQuery.getResultList();
List<T> resultList=new ArrayList<T>();
for (Object obj : rows) {
T row=(T)obj;
resultList.add(row);
}
return resultList;
}


public Integer findCountBySql(String sql,Map<String,Object> parameters){
List<Object> list=this.findBySql(sql,parameters,Object.class);
BigInteger total=(BigInteger)list.get(0);
return total.intValue();
}

}

Spring Data JPA原生SQL查詢

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.