JPA的简单学习使用

158 阅读2分钟
  • Overview

ORM:Object Relational Mapping,用元数据描述映像细节.

ORM 框架的本质是简化编程中操作数据库的编码,发展到现在基本上就剩两家了,一个是宣称可以不用写一句 SQL 的 Hibernate,一个是可以灵活调试动态 SQL 的 Mybatis,两者各有特点,在企业级系统开发中可以根据需求灵活使用。

Hibernate 特点就是所有的 SQL 都用 Java 代码来生成,不用跳出程序去写(看)SQL,有着编程的完整性,发展到最顶端就是 Spring Data Jpa 这种模式了,基本上根据方法名就可以生成对应的 SQL 了。

  • MAVEN配置

<dependency>

<groupId>org.springframework.boot</groupId>

<artifactId>spring-boot-starter-data-jpa</artifactId>

</dependency>

<dependency>

<groupId>mysql</groupId>

<artifactId>mysql-connector-java</artifactId>

</dependency>

  • 实体类注解
    1. @Id :主键注解
    2. @JsonIgnore:不需要返回前端
    3. @Transient:不是数据库字段
  • 建立JpaRepository 接口
    1. 是一个接口,没有提供任何方法
    2. 实现了这个接口就会被Spring IOC容器识别为Bean
    3. 对于比较简单的方法是不需要实现的,JPA通过一定的命名原则,过滤掉一些关键字,如find…By,read…By,query…By,count…By 和 get…By。

系统会根据关键字将命名解析成 2 个子语句,第一个 By 是区分这两个子语句的关键词。这个 By 之前的子语句是查询子语句(指明返回要查询的对象),后面的部分是条件子语句。如果直接就是 findBy… 返回的就是定义 Respository 时指定的领域对象集合,同时 JPQL 中也定义了丰富的关键字:and、or、Between 等等。

  • JPA高级使用
    1. 可以使用@Query注解写SQL
  • 分页查找

使用Page和Pageable实现

例:Page<File>findAll(Pageablepageable);

  • 模糊查找

Containing关键字

findByFileNameContaining