import javax.persistence.EntityManager;
import javax.persistence.PersistenceContext;
import javax.persistence.Query;
import java.util.List;
import java.util.Map;
import lombok.extern.slf4j.Slf4j;
import org.hibernate.query.internal.NativeQueryImpl;
import org.hibernate.transform.Transformers;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.domain.Page;
import org.springframework.data.domain.PageRequest;
import org.springframework.data.jpa.domain.Specification;
import org.springframework.data.jpa.repository.JpaSpecificationExecutor;
import org.springframework.stereotype.Component;
import org.springframework.util.Assert;
@Component
@Slf4j
public class JPAUtils {
@Autowired
@PersistenceContext
private EntityManager entityManager;
private <T> Query nativeQuery(String sql, Class<T> resultClass, List<Object> params) {
Assert.hasText(sql, "查询sql为空");
Query query = null;
if (resultClass == null) {
query = entityManager.createNativeQuery(sql);
} else {
query = entityManager.createNativeQuery(sql, resultClass);
}
log.info("query sql = {}", sql);
if (params != null && params.size() > 0) {
log.debug("params = {}", params);
for (int i = 0; i < params.size(); i++) {
query.setParameter(i + 1, params.get(i));
}
}
return query;
}
/**
* sql查询返回Map
*
* @param sql
* @param params
* @return key为查询语句中的字段名,value为对应值
*/
public List<Map<String, Object>> nativeQueryForMap(String sql, List<Object> params) {
Query query = nativeQuery(sql, null, params);
return query.unwrap(NativeQueryImpl.class).setResultTransformer(Transformers.ALIAS_TO_ENTITY_MAP).getResultList();
}
}
EntityManager基本查询
猜你喜欢
转载自blog.csdn.net/weixin_41131531/article/details/88538160
今日推荐
周排行