[spring-data-jpa]增删改查详解

作者: 小贾同学coding | 来源:发表于2020-03-17 23:47 被阅读0次

ReadMe

1.相遇

 上次的通过一个简单的crud例子简单的对spring-data-jpa有了初步的了解,但是仅仅是在crudRepository在开发过程中的使用还是远远不够的。
 虽然如此,这里还是先对crudRepositoy提供的接口进行简单的罗列

public interface CrudRepository<T, ID> extends Repository<T, ID> {
/**
  *Saves the given entity. 保存提供的实体类
  */
  <S extends T> S save(S entity);      
/**
  *Returns the entity identified by the given ID. 返回给定id的实体类
  */
  Optional<T> findById(ID primaryKey); 
/**
  *Returns all entities.返回所有实体类
  */
  Iterable<T> findAll();               
/**
  *Returns the number of entities.返回更多实体类
  */
  long count();                        
/**
  *Deletes the given entity. 删除给定的实体类
  */
  void delete(T entity);               
/**
  *Indicates whether an entity with the given ID exists. 校验给定主键的实体类是否存在
  */
  boolean existsById(ID primaryKey);   

  // … more functionality omitted.
}

2.相识(肯能会蒙蔽,最后一节看了就不会了)

·分页和排序
public interface PagingAndSortingRepository<T, ID> extends CrudRepository<T, ID> {

  Iterable<T> findAll(Sort sort);

  Page<T> findAll(Pageable pageable);
}

 下面是用法,findAll的排序需要Sort,入参分页需要pageable作为入参

/**分页*/
    public static PageRequest of(int page, int size) 
    public static PageRequest of(int page, int size, Sort sort)
    public static PageRequest of(int page, int size, Direction direction, String... properties) 
/**排序*/
    public static Sort by(String... properties) 
    public static Sort by(Direction direction, String... properties)
  //Order by(String property),Order asc(String property),Order desc(String property)
    public static Sort by(List<Order> orders)
    public static Sort by(Order... orders)

 分页函数的入参需要调用PageRequest.of()方法生成,可选的参数有page(页码),size(每页大小),Sort(排序对象),Direction(升序降序的枚举类)
 分页函数的入参需要调用Sort.by()方法生成,提供的可选入参properties(属性),Direction(升序降序的枚举类),Order(排序对象)

·自定义方法
interface UserRepository extends CrudRepository<User, Long> {

  long deleteByLastname(String lastname);

  List<User> removeByLastname(String lastname);
}

 我们也可以在Repostitory中加入方法<操作By属性名(变量)>即可实现简单的自定义。

3.相知

 上一节可能会有点蒙,那个是为了方便以后了解了用法快速查阅的,这里来进行下总结。
 1.分页要求的入参是Pageable接口,PageRequest继承了AbstractPageRequest而AbstractPageRequest实现了Pageable接口,因此我们只需要调用Pageable.of()生成是一个实例即可
 2.分页请求(pageRequest)中3号实例化方法除了分页参数之外,还需要提供 Direction direction, String... properties参数,这两个参数组合使用,用于指定排序,Direction是排序枚举,可以指定升序降序,properties不用多说见名知意指定属性(好吧我还是说了)。这两个参数在生成实例化对象时调用了Sort.by(direction, properties)实例化了一个排序对象(Sort).同时调用了实例化请求对象2号方法。这里说明下无论是3中实例化分页请求中任意一个方法,实际上最终都是调用了方法2,方法一也是调用了Sort.unsorted()方法返回一个指明不排序的Sort;
 3.关于排序的几个实例化方法,无论你是直接指定List<Order> orders,还是调用by(String... properties)最终都会在实例化Sort对象时转换成List<Order> orders,并赋值给Sort对象中的orders属性。
 至此上述实例化中的所有参数也已经讲述完毕,今天的一篇也到此结束了,如果这篇文章有幸被某个需要它的人看到那么是它荣幸,没有的话也没关系,至少我会一直使用它。本文参考了spring-Data-jpa的英文api文档和源码,如果有描述不正确的地方希望斧正。
 最后跪求点个赞,来个收藏,评论一下,那将是我莫大的荣幸。(老子爱你,挂了哦)

目录

相关文章

  • [spring-data-jpa]增删改查详解

    ReadMe 1.相遇  上次的通过一个简单的crud例子简单的对spring-data-jpa有了初步的了解,但...

  • spring-data-jpa 目录

    ReadMe 快速配置 crud demon 增删改查详解

  • mysql的插入语句

    MySQL增删改查之增insert、replace

  • MYSQL数据库的增删改查

    MYSQL数据库的增删改查 一.对于库的增删改查 增create database 库名称;create data...

  • 关于python的list的增查删改

    说到增查删改,想起了数据库,我们在关系型数据库当中就会对表进行增查删改。 在python当中我们也可以对list进...

  • 0812 A

    mongodb 增删改查 增: db.createCollection("name", {options:numb...

  • SpringBoot 【 第四章 】数据访问(Spring-da

    Spring-data-jpa 让数据访问 so easy 实际开发过程中,对数据库的操作无非是“增删改查”。语句...

  • 增删改

    对于表中的操作,就是增删改查,查内容较多,这里先说增删改。 1.增(insert或者load) 即插入数据,多行插...

  • SQL查询结构总结

    SQL 增删改查 对数据库有修改的操作是:增删改 增 insert into 表名 values(); 删 del...

  • 2018-03-03

    rails c增删改查 增:user = User.create(name:'Jack', age:'18') 删...

网友评论

    本文标题:[spring-data-jpa]增删改查详解

    本文链接:https://www.haomeiwen.com/subject/dnnxyhtx.html