springboot学习笔记之Spring Data Jpa

谁都会走 提交于 2020-01-19 07:10:59

jpa:java persistence api java持久化规范
O/R:object-relational mapping
只需要定义一个继承JpaRepository的接口之后就有如下数据访问的操作方法
在这里插入图片描述

spring boot整合spring data jpa

导包:spring-boot-starter-data-jpa(当然mysql还是需要导入)
配置:
实体类注解:
1@Entity @Table(name="")标明是一个实体类,一般一起用。如果表名和实体类名相同@Table可以省略
2@Id该属性为主键:注意应该导import javax.persistence.Id;包
3@GeneratedValue:自定义主键生成策略
4@Column:表示列名
5@Transient:表示该属性不在表中,且必须要加
6@Temporal:格式化日期
7@OneToOne
8@OneToMany
9@JoinColumn
10@JoinTable
如果有中间表:则应添加中间表作为实体类,并两个表关联的id都应加@Id注解,多个主键
使用:
在这里插入图片描述
1.声明一个接口继承自Reposity或它的一个子接口
2.在接口中定义方法
3.分页使用

 Pageable pageRequest = PageRequest.of(page, size);
    return problemDao.findWaitListByLabelId(label, pageRequest);

按照条件查询:Criteris查询

Specification是一个接口,要创建匿名内部类
在这里插入图片描述

注:root代表根标签,如图片中的,root就代表传进来的label
cb:查询条件标准类,将查询条件放入到cb中,注意接收的是数组,但是外边传来的一般是列表,
查询方法定义:
在这里插入图片描述
在这里插入图片描述
查询限制结果:使用top,first如

User findFirstByUsernameOrderByUsernameAsc(String username);

List<User> findTop10ByUsername(String username, Sort sort);
    
List<User> findTop10ByUsername(String username, Pageable pageable);

分页与排序:

 public Page<Enterprise> findSearch(Map whereMap, int page, int size) {
        Specification<Enterprise> specification = createSpecification(whereMap);
        Pageable pageable= PageRequest.of(page - 1, size);
        Sort(Direction.ASC,"age")
        return enterpriseDao.findAll(specification, pageRequest);
    }

自定义查询:@Query JPQL查询语句

@Query("select u from User u where u.email = ?1")
User getByEmail(String eamil);

@Query("select u from User u where u.username = ?1 and u.password = ?2")
User getByUsernameAndPassword(String username, String password);

@Query("select u from User u where u.username like %?1%")
List<User> getByUsernameLike(String username);

多表查询:加nativeQuery=true表示使用原生的sql

自定义接口查询

@NoRepositoryBean
public interface CustomRepository<T,ID> extends Serializable extends PagingAndSortingRepository<T,ID>{}

注:拓展后一个接口是为了能够分页

具体见https://www.jianshu.com/p/c23c82a8fcfc

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!