spring-data-jap入门和测试用例以及介绍

文章目录
  1. 1. springJpa介绍
  2. 2. 字段映射
    1. 2.1. 查询继承JpaRepository
    2. 2.2. 注解query
    3. 2.3. 查询继承JpaSpecificationExecutor的灵活查询
  3. 3. 编辑和新增数据

springJpa介绍

springjpa 是springdata下面的框架用来对接数据 是门面框架定义 数据交互到数据库,很多的接口规范使用的是 JPA规范 *javax.persistence.** ,我们选择内部实现为habernate ,具体的实现可以选择xxxx等,

下面是关于spring -orm的介绍Spring - ORM Framework - GeeksforGeeks

Spring-ORM is a technique or a Design Pattern used to access a relational database from an object-oriented language. ORM (Object Relation Mapping) covers many persistence technologies. They are as follows:

  • JPA(Java Persistence API): It is mainly used to persist data between Java objects and relational databases. It acts as a bridge between object-oriented domain models and relational database systems.
  • JDO(Java Data Objects): It is one of the standard ways to access persistent data in databases, by using plain old Java objects (POJO) to represent persistent data.
  • Hibernate – It is a Java framework that simplifies the development of Java applications to interact with the database.
  • Oracle Toplink, and iBATIS: Oracle TopLink is a mapping and persistence framework for Java development.

需要了解常用的注解

  • 支持基于 Spring 和 JPA 构建存储库
  • 支持Querydsl谓词,因此支持类型安全的 JPA 查询
  • 透明审计
  • 分页支持、动态查询执行、集成自定义数据访问代码的能力
  • @Query在引导时验证带注释的查询
  • 支持基于 XML 的实体映射
  • 通过引入基于 JavaConfig 的存储库配置@EnableJpaRepositories

字段映射

1
2
3
4
5
6
7
8
9
10
@Table(name = "malfunction_report") //标记表的名称
@Entity:标识这是一个JPA的实体,当项目启动时会更具这个实体创建相应的表


@Id //标记表的自增的ID
@GeneratedValue

@Column(name = "items")//标记字段的对应的映射
@Convert(converter = JpaConverterListJson.class)// 保存和查询时能解析为对应的变量
@Enumerated(EnumType.STRING)//对应枚举这种最后在数据库需要保存为你字符串

查询继承JpaRepository

直接可以字段拼接一个简单的查询,在继承了JpaRepository后可以发现,

注解query

使用注解可以使用jpa定义的hql来查询利用对象的映射关系,而且比较存在的ORM(Object-Relational Mapping)逻辑,同时如果部分字段需要调用特殊的函数也支持直接写SQL,需要在SQL后用逗号分割讲native设置为true

查询继承JpaSpecificationExecutor的灵活查询

org.springframework.data.jpa.domain.Specification 需要实现toPredicate这里需要多个学习多个对象

  • Root root

    主要要使用

  • CriteriaQuery<?> query

    criterialQuery ToDo

  • CriteriaBuilder criteriaBuilder

    CriteriaBuilder todo

1
2
3
4
javax.persistence.criteria.Predicate

javax.persistence.criteria.Expression

上述对象能最大程度实现灵活的查询,加上 org.springframework.data.domain.Page可以最大程度的满足查询的需要

编辑和新增数据

在自己实现的方法需要 @modify才会生效

spring-data-jpa-examples/PersonSpecificationsTest.java at master · pkainulainen/spring-data-jpa-examples

Spring Data JPA Tutorial: Pagination

Mockito’s Java 8 Features | Baeldung