关闭

Spring Boot Jpa 常用操作语句

标签: spring boot jpaspring data jpaSpring jpa基本操作语句Jpa基础概念
149人阅读 评论(0) 收藏 举报
分类:

什么是JPA?  


JPA ( The Java Persistence API )是用于访问,持久化和管理 Java 对象 /类与关系型数据库之间的数据交互的 Java 规范。 JPA 被定义为 EJB ( Enterprise JavaBeans ) 3.0 规范的一部分,作为 EJB 2 CMP 实体 Bean 规范的替代。

注意, JPA 只是一个标准,只定义了一系列接口,而没有具体的实现。很多企业级框架提供了对 JPA 的实现,如 Spring 。因此 Spring 本身与 JPA 无关,只是提供了对 JPA 的支持,因此在 Spring 中你也会看到很多注解都是属于 javax.persistence 包的。

JPA 允许 POJO( Plain Old Java Objects )轻松地持久化,而不需要类来实现 EJB 2 CM P 规范所需的任何接口或方法。 JPA 还允许通过注解或 XML 定义对象的关系映射,定义 Java 类如何映射到关系数据库表。 JPA 还定义了一个运行时 EntityManager API ,用于处理对象的查询和管理事务。 同时, JPA 定义了对象级查询语言 JPQL,以允许从数据库中查询对象,实现了对数据库的解耦合,提高了程序的可移植性,而不具体依赖某一底层数据库。

JPA 是 Java 持久化规范中的一个最新版本。第一个版本是 OMG 持久性服务 Java 绑定,但这个一个失败的产品,甚至没有任何商业产品支持它。接下来的版本是 EJB 1.0 CMP Entity Beans ,它已经非常成功地被大型 Java EE 提供程序( BEA , IBM )采用,但是它复杂性太高而且性能比较差。 EJB 2.0 CMP 试图通过引入本地接口来减少 Entity Bean 的一些复杂性,但是大多数复杂性仍然存在,而且缺乏可移植性。

历史总是要向前发展的,种种的这些使得 EJB 3.0 规范将降低复杂性作为主要目标,这导致规范委员会沿着 JPA 的路径前进。 JPA 旨在统一 EJB 2 CMP , JDO , Hibernate ,从目前来看, JPA 的确取得了成功。

目前大多数持久化供应商已经发布了 JPA 的实现,并被行业和用户采用。这些包括 Hibernate (由 JBoss 和 Red Hat 收购), TopLink (由 Oracle 收购)和 Kodo JDO (由 BEA 和 Oracle 收购)。其他支持 JPA 的产品包括 Cocobase (由 Thought Inc. 收购)和 JPOX 。



JPA的基本操作语句


 //And --- 等价于 SQL 中的 and 关键字,比如 findByHeightAndSex(int height,char sex);  
 public List<User> findByHeightAndSex(int height,char sex);  
  
// Or --- 等价于 SQL 中的 or 关键字,比如 findByHeightOrSex(int height,char sex);  
 public List<User> findByHeightOrSex(int height,char sex);  
  
 //Between --- 等价于 SQL 中的 between 关键字,比如 findByHeightBetween(int min, int max);  
 public List<User> findByHeightBetween(int min,int max);  
  
 //LessThan --- 等价于 SQL 中的 "<",比如 findByHeightLessThan(int max);  
 public List<User> findByHeightLessThan(int max);  
  
 //GreaterThan --- 等价于 SQL 中的">",比如 findByHeightGreaterThan(int min);  
 public List<User> findByHeightGreaterThan(int min);  
  
 //IsNull --- 等价于 SQL 中的 "is null",比如 findByNameIsNull();  
 public List<User> findByNameIsNull();  
  
 //IsNotNull --- 等价于 SQL 中的 "is not null",比如 findByNameIsNotNull();  
 public List<User> findByNameIsNotNull();  
  
 //NotNull --- 与 IsNotNull 等价;  
 public List<User> findByNameNotNull();  
  
 //Like --- 等价于 SQL 中的 "like",比如 findByNameLike(String name);  
 public List<User> findByNameLike(String name);  
  
 //NotLike --- 等价于 SQL 中的 "not like",比如 findByNameNotLike(String name);  
 public List<User> findByNameNotLike(String name);  
  
 //OrderBy --- 等价于 SQL 中的 "order by",比如 findByNameNotNullOrderByHeightAsc();  
 public List<User>findByNameNotNullOrderByHeightAsc();  
  
 //Not --- 等价于 SQL 中的 "! =",比如 findByNameNot(String name);  
 public List<User> findByNameNot(String name);  
  
 //In --- 等价于 SQL 中的 "in",比如 findByNameIN(String name);  
 public List<User> findByNameIn(String name);  
  
 //NotIn --- 等价于 SQL 中的 "not in",比如 findByNameNotIN(String name);  
 public List<User> findByNameNotIn(String name);  



 原生Sql语句


   //利用原生的SQL进行查询操作  
   @Query(value = "select o.* from orders o ,user u where o.uid=u.id and u.name=?1", nativeQuery = true)  
   @Modifying  
   public List<Order> findOrderByName(String name);  
  
   //利用原生的SQL进行删除操作  
   @Query(value = "delete from orders where id=?1 ", nativeQuery = true)  
   @Modifying  
   public void deleteOrderById(int id);  
  
   //利用原生的SQL进行删除操作  
   @Query(value = "delete from orders where uid=?1 ", nativeQuery = true)  
   @Modifying  
   public void deleteOrderByUId(int uid);  
  
   //利用原生的SQL进行修改操作  
   @Query(value = "update orders set name=?1 where id=?2 ", nativeQuery = true)  
   @Modifying  
   public void updateOrderName(String name,int id);  
  
   //利用原生的SQL进行插入操作  
   @Query(value = "insert into orders(name,uid) value(?1,?2)", nativeQuery = true)  
   @Modifying  
   public void insertOrder(String name,int uid);

1
0
查看评论

使用spring-boot-starter-data-jpa 怎么配置使运行时输出SQL语句

在 application.properties 中加入以下配置spring.jpa.show-sql=true
  • yiluoAK_47
  • yiluoAK_47
  • 2017-08-29 16:41
  • 1721

spring boot jpa update 操作

@Query("update IndMsg e set e.is_read = '1' where e.user_id = :user_id ") @Modifying Integer batchRead(@Param("user_id&...
  • silyvin
  • silyvin
  • 2017-05-10 20:55
  • 3175

Spring boot JPA 常用操作

今天给大家介绍一下SpringBoot中JPA的一些常用操作,例如:增删改查、分页、排序、事务操作等功能。 下面先来介绍一下JPA中一些常用的查询操作: //And --- 等价于 SQL 中的 and 关键字,比如 findByHeightAndSex(int height,cha...
  • hmq995201
  • hmq995201
  • 2017-09-28 11:50
  • 103

Spring Boot学习日志(二)JPA操作Mysql

Spring Boot学习日志(二)JPA基本操作 Spring Boot学习日志(一)Hello World Spring Boot学习日志(二)JPA操作Mysql Spring Boot学习日志(三)再谈Jpa Spring Boot学习日志(四)使用Mybatis Spring Boot...
  • azui007
  • azui007
  • 2018-02-04 20:15
  • 52

关于SpringBoot使用JPA的更新操作(save方法和原生SQL方法)

自学SpringBoot遇到些问题,才有了这篇博客,里面可能有些错误,欢迎指教。1、使用save方法进行数据更新//实体类 @Entity public class Student extends JpaRepositoriesAutoConfiguration{ private Integ...
  • sinat_33889619
  • sinat_33889619
  • 2017-10-19 11:06
  • 1568

SpringBoot中设置Hibernate format_sql

spring: jpa: properties: hibernate: format_sql: true show_sql: truehttps://docs.spring.io/spring-boot/docs/current/referen...
  • kangkanglou
  • kangkanglou
  • 2017-11-28 20:29
  • 778

Spring Boot Jpa之构建动态SQL查询语句

Spring Boot Jpa构建动态SQL查询语句引入依赖包:<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-start...
  • u011726984
  • u011726984
  • 2017-05-22 16:44
  • 6440

spring boot集成data-jpa

在实际开发过程中,对数据库的操作无非就“增删改查”。就最为普遍的单表操作而言,除了表和字段不同外,语句都是类似的,开发人员需要写大量类似而枯燥的语句来完成业务逻辑。 为了解决这些大量枯燥的数据操作语句,我们第一个想到的是使用ORM框架,比如:Hibernate。通过整合Hibernate之后,我们以...
  • e_laoye
  • e_laoye
  • 2016-05-20 13:07
  • 1216

SpringBoot系列(6)---SpringBoot-JPA

JPA 应该都熟悉了,我就不多说了什么是JPA了。目前JPA主要实现由hibernate和openJPA等。 Spring Data JPA 是Spring Data 的一个子项目,它通过提供基于JPA的Repository极大了减少了操作JPA的代码。笔者觉得这个由SpringBoot 提供的JP...
  • tony308001970
  • tony308001970
  • 2017-07-12 00:17
  • 4773

Spring Boot JPA使用详解

spring data jpa介绍 首先了解JPA是什么? JPA(Java Persistence API)是Sun官方提出的Java持久化规范。它为Java开发人员提供了一种对象/关联映射工具来管理Java应用中的关系数据。他的出现主要是为了简化现有的持久化开发工作和整合ORM技术,结束现在...
  • suo082407128
  • suo082407128
  • 2017-03-09 16:54
  • 1193
    个人资料
    • 访问:1843次
    • 积分:182
    • 等级:
    • 排名:千里之外
    • 原创:16篇
    • 转载:1篇
    • 译文:0篇
    • 评论:0条
    文章存档