- 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>
- 实体类注解
- @Id :主键注解
- @JsonIgnore:不需要返回前端
- @Transient:不是数据库字段
- 建立JpaRepository 接口
- 是一个接口,没有提供任何方法
- 实现了这个接口就会被Spring IOC容器识别为Bean
- 对于比较简单的方法是不需要实现的,JPA通过一定的命名原则,过滤掉一些关键字,如find…By,read…By,query…By,count…By 和 get…By。
系统会根据关键字将命名解析成 2 个子语句,第一个 By 是区分这两个子语句的关键词。这个 By 之前的子语句是查询子语句(指明返回要查询的对象),后面的部分是条件子语句。如果直接就是 findBy… 返回的就是定义 Respository 时指定的领域对象集合,同时 JPQL 中也定义了丰富的关键字:and、or、Between 等等。
- JPA高级使用
- 可以使用@Query注解写SQL
- 分页查找
使用Page和Pageable实现
例:Page<File>findAll(Pageablepageable);
- 模糊查找
Containing关键字
findByFileNameContaining