本文介绍一下JPA常见的两种查询方式。
注:数据库为Oracle

1.前置准备

1.引入jar包
使用JPA,首先引入jar包,一个是JPA,另一个是数据库驱动,我使用的是Oracle数据库。

 <dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-data-jpa</artifactId></dependency><dependency><groupId>com.oracle</groupId><artifactId>ojdbc6</artifactId><version>11.2.0.4</version></dependency>

2.定义Entity

@Entity
@Data
@Table(name = "TEST_TABLE_01", schema = "LOCAL")
public class Table01Entity {@Idprivate long id;private String fileType;private String fileSize;private String fileName;
}

2.数据查询

方式一:使用自带的方法进行查询

此方法只适用于简单sql,优点是不需要写sql,直接在service里调用方法就好,代码比较简单。
service类

@Service
public class Table01ServiceImpl {@AutowiredTable01Repository table01Repository;public Table01Entity findById(long id) {Table01Entity entity = table01Repository.findById(id);return entity;}
}

repository类,继承JpaRepository即可,不需要写任何方法。

@Repository
public class Table01Repository extends JpaRepository<Table01Entity, Long>, JpaSpecificationExecutor {}

方式二:使用@query自定义sql

这种方式允许你自己写sql,方便实现比较复杂的查询。
service类

@Service
public class Table01ServiceImpl {@AutowiredTable01Repository table01Repository;public Table01Entity findByIdOnYourOwn(long id) {Table01Entity entity = table01Repository.findByIdOnYourOwn(id);return entity;}
}

repository类,定义findByIdOnYourOwn()方法。

@Repository
public class Table01Repository extends JpaRepository<Table01Entity, Long>, JpaSpecificationExecutor {@Query(value = "select * from Table01Entity " +"where fileName=''123.txt")public List<Table01Entity> findByIdOnYourOwn();
}

你可能发现了,上面跟在from后面的并不是表名,而是Entity的名字,这是默认的写法,如果你想使用原生的sql,在@Query里加上nativeQuery = true就可以了

@Repository
public class Table01Repository extends JpaRepository<Table01Entity, Long>, JpaSpecificationExecutor {@Query(value = "select * from TEST_TABLE_01 t1" +"where t1.file_name=''123.txt", nativeQuery = true)public List<Table01Entity> findByIdOnYourOwn();
}

结束。

JPA踩坑笔记(一) - 数据查询的两种方式相关推荐

  1. docker容器运行mysql持久化_docker容器实现数据持久化的两种方式及其区别

    前言 这篇博文是我对docker实现数据持久化几种方式的特征进行一个总结. 在docker中,它的存储文件系统是在dockerhost上原有的xfs或ext4架设了一层文件系统:overlay2(将此 ...

  2. Android页面数据传递的两种方式

    在android中实现页面中数据的传递有两种方式: 1:第一种数据传递的方式是通过inputExtra方法来进行数据的传递的 2:第二中方法是通过bundle的方法来实现数据的传递的 接下来我们首先来 ...

  3. SSM整合之Mybatis笔记( MyBatis获取参数值的两种方式(重要))(P020—P025)

    P20 MyBatis获取参数值的两种方式(重要) 一.什么叫做获取取参数值的两种方式 以后在我们开发是方向B/S系统,然后我们现在要做的任务通过浏览器/页面/视图 收集用户输入的一些数据,然后把这些 ...

  4. 跨页数据传递的两种方式

    选择具有PostBackUrl属性的三个控件Button.LinkButton.ImageButton.PostBackUrl属性的值就是投递的页面URL. 要在接收页面按对象的方式接收投递页面的表单 ...

  5. Mybatis关联查询的两种方式

    首先要了解对象的三种关联方式 *数据库表的关联关系有三种,一对一,一对多,多对多 一对一   是通过在任意一方的主键,引入对方主键作为外键来实现的,就是说主键与外键为同一字段 一对多   是通过在&q ...

  6. mybatis一对多查询的两种方式

    user 和order 对象 package com.itheima.mybatis.pojo;import java.io.Serializable; import java.util.Date;p ...

  7. redis优化查询的两种方式

    前言 一般来说,查询成为很多应用对外的性能瓶颈,其主要原因在于一旦并发量上来了,应用后台和数据库或者其他的存储服务的IO交互次数增多了,而服务器的线程资源开销是有限的,如何减少IO次数,这是优化要考虑 ...

  8. es查询所欲_elasticsearch之查询的两种方式

    前言 简单的没挑战,来点复杂的,比如查看来自顾家的都有哪些人怎么查呢?elasticsearch提供两种查询方式: 查询字符串(query string),简单查询,就像是像传递URL参数一样去传递查 ...

  9. mybatis一对多的查询的两种方式

    需求简介: 有3张表,部门 ---->组织 ---->员工,一个部门包含多个组织,每个组织下有多名员工,现在需要根据部门ID查询某个部门下的所有组织,以及每个组织下的所有员工信息,返回的是 ...

最新文章

  1. 在把webpack作为本地开发依赖安装的时候报错
  2. 初学者可能不知道的 vue.js技巧
  3. awk -f 分隔符 命令_Linux三剑客之awk
  4. Git remote 修改源
  5. iOS开发蓝牙 蓝牙4.0的各种踩过的坑,希望你们少踩点
  6. C#实现窗口最小化到系统托盘
  7. android开发之shape详解
  8. Nginx的location配置详解
  9. 数据科学 IPython 笔记本 7.8 分层索引
  10. 什么,容器太多操作不过来?我选择Docker Compose梭哈
  11. Leetcode每日一题:198.house-robber(打家劫舍)
  12. 如何在.NET中启用程序集绑定失败日志记录(Fusion)
  13. 虚拟IP技术-VIP 与 负载均衡
  14. 关于R中的统计量----t检验
  15. 细数阿里 25 个开源的前端项目,让你的 2021 路更加平坦
  16. 2015年史玉柱演讲实录
  17. java定义个字符串_Java定义字符串(2种方式)
  18. 3D转换 透视 3D旋转魔方
  19. Javascript禁止鼠标和键盘
  20. RTMP流媒体直播资料

热门文章

  1. VUE+ElementUI生成Excel模板 导入数据生成表格(自适应)
  2. 计算机教师队伍掌握的素质,教师信息素养的现状和对策论文
  3. 5月券商App行情刷新及交易体验评测报告,四家券商综合评级上升
  4. Fireworks 制作一个水晶图标
  5. 测试用例入门(三)-使用边界值分析法编写测试用例
  6. 51单片机电子钟 是如何做成的(5)---试验电路 的电路板制作(热转印法)
  7. Excel搭建RFM模型
  8. 二维正态分布及其最大值、最小值、和项、差项的期望
  9. Ngnix IP封禁以及实现自动封禁IP
  10. 经常更换宽带账号时连接问题