package com.test.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

* @return

*/

public List 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 resultList=new ArrayList();

for (Object obj : rows) {

T row=(T)obj;

resultList.add(row);

}

return resultList;

}

/**

* 根据参数查询

* @param sql

* @param parameters

* @param resultClass

* @param

* @return

*/

public List findBySql(String sql,Map parameters,Class resultClass){

Query nativeQuery=null;

if(resultClass!=null && !resultClass.equals(Object.class)) {

nativeQuery = entityManager.createNativeQuery(sql, resultClass);

}else{

nativeQuery = entityManager.createNativeQuery(sql);

}

Iterator> entries = parameters.entrySet().iterator();

while (entries.hasNext()) {

Map.Entry entry = entries.next();

nativeQuery.setParameter(entry.getKey(),entry.getValue());

}

List rows = nativeQuery.getResultList();

List resultList=new ArrayList();

for (Object obj : rows) {

T row=(T)obj;

resultList.add(row);

}

return resultList;

}

public Integer findCountBySql(String sql,Map parameters){

List list=this.findBySql(sql,parameters,Object.class);

BigInteger total=(BigInteger)list.get(0);

return total.intValue();

}

}

jpa原生query_Spring Data JPA原生SQL查询相关推荐

  1. jpa原生query_Spring Data Jpa @Query原生SQL

    使用Spring Data JPA时,可以使用@Query注解解决表关联查询问题.使用@Query注解可以使用原生SQL.此时,会遇到如何分页,如何动态拼装SQL等问题. 原生SQL 在@Query注 ...

  2. Hibernate、JPA、Spring Data JPA,傻傻分不清

    国庆假期接近尾声,明天最后一天了,要开始收收心啦- 今天讲讲一个初学者(或许一些老手)可能没去搞懂的几个概念:Hibernate.JPA.Spring Data JPA 之间的关联. 嘿嘿,前段时间有 ...

  3. mysql jpa 正则_Spring Data JPA 实例查询

    数量:1 刘芳 三.认识"实例查询" 1.概念定义: 上面例子中,是这样创建"实例"的:Example ex = Example.of(customer, ma ...

  4. 简述 JPA 与 Spring Data JPA 与 Hibernate

    1.JPA是什么?以及相关概述 JPA的是 Java Persistence API 的简写,是Sun官方提出的一种ORM规范! Sun提出此规范有2个原因: 1.简化现有Java EE和Java S ...

  5. 【spring data jpa】spring data jpa 中的update 更新字段,如果原字段值为null不处理,不为null则在原来的值上加一段字符串...

    示例代码: /*** 如果barCode字段值为null则不处理* 如果barCode字段值不为null则在原本值的前面拼接 del:* @param dealer* @return*/@Modify ...

  6. springboot jpa sql打印_SpringBoot集成Spring Data JPA以及读写分离

    相关代码:github OSCchina JPA是什么 JPA(Java Persistence API)是Sun官方提出的Java持久化规范,它为Java开发人员提供了一种对象/关联映射工具 来管理 ...

  7. SpringBoot学习笔记:Spring Data Jpa的使用

    更多请关注公众号 Spring Data Jpa 简介 JPA JPA(Java Persistence API)意即Java持久化API,是Sun官方在JDK5.0后提出的Java持久化规范(JSR ...

  8. hql实例 jpa_SpringBoot学习笔记九:Spring Data Jpa的使用

    Spring Data Jpa 简介 JPA JPA(Java Persistence API)意即Java持久化API,是Sun官方在JDK5.0后提出的Java持久化规范(JSR 338,这些接口 ...

  9. hibernate mysql 读写分离_SpringBoot集成Spring Data JPA及读写分离

    JPA是什么 JPA(Java Persistence API)是Sun官方提出的Java持久化规范,它为Java开发人员提供了一种对象/关联映射工具 来管理Java应用中的关系数据.它包括以下几方面 ...

最新文章

  1. redis必杀高级:性能测试
  2. ireport各个版本的下载地址分享
  3. QT的QMenuBar类的使用
  4. PHP的static
  5. 【渝粤题库】国家开放大学2021春2724市场营销原理与实务题目
  6. 「mysql优化专题」主从复制面试宝典!面试官都没你懂得多!(11)
  7. win8安装python3后不能编程_Win8.1 64位系统,python3.4 肿么安装gevent成功后不能用
  8. 【华为云技术分享】数据湖数据库,别再傻傻分不清了
  9. 联想9439微型计算机拆机,e43a 拆解文章.docx
  10. STM32WL开发之LORA产品选型
  11. php阿拉伯数字转换大写,php 阿拉伯数字如何转大写
  12. 2018怎样发英文外链才能提升谷歌排名
  13. InstallShield软件详解
  14. php上传文件失败解决方案
  15. 实验室常见的PFA制品有哪些?这些特氟龙PFA产品你认得全吗?
  16. java常用混淆工具(有链接)
  17. 行业洞察|如何更好地建设数据中台?IT和业务要“齐步走”
  18. Java基础重温_02:运算符、三元运算符案例(2只老虎、3个和尚)、键盘录入(Scanner类)、控制流程语句、控制流程语句案例(奇偶数、考试奖励)
  19. 2022.05面试总结
  20. 用 Python 爬取分析每日票房数据

热门文章

  1. Hadoop背景、模块介绍、架构
  2. Java面试题:线程实现的两种方式及匿名内部类实现
  3. formSelects-v4.js 基于Layui的多选解决方案
  4. LIBCMTD.lib与libcpmtd冲突的解决方法。
  5. 敏捷实践:比每日会议更疯狂的半日会议!
  6. WEB攻防实战篇,思维导图
  7. 计算机网络——编码和调制
  8. Leetcode--397. 整数替换
  9. python logging模块的作用及应用场景_Python logging模块原理解析及应用
  10. okhttp post json 数据_使用python抓取App数据