zoukankan      html  css  js  c++  java
  • 出入Spring boot(六)数据访问

      Spring Data提供了使用统一的API进行数据访问操作,这是Spring通过提供Spring DataCommons项目来实现的,它是Spring data的依赖Spring Data Commons让我们在使用关系型或非关系型数据访问技术时都使用基于Spring的统一标准,该标准包含CRUD(创建、获取、更新、删除)、查询、排序和分页的相关的操作。

      Spring Data Commons有一个重要的概念:Spring Data Repository抽象。使用Spring Data Repository可以极大地减少数据访问层的代码。既然是数据访问操作的统一标准,那肯定定义了各种各样和数据访问相关的接口,Spring Data Repository抽象的跟接口是Repository接口:

     1 public interface Repository <T, ID extends java.io.Serializable> { } 

    它的子接口CrudRepository定义了和CRUD操作相关的内容

     1 @NoRepositoryBean
     2 public interface CrudRepository<T, ID extends Serializable> extends Repository<T, ID> {
     3     <S extends T> S save(S var1);
     4 
     5     <S extends T> Iterable<S> save(Iterable<S> var1);
     6 
     7     T findOne(ID var1);
     8 
     9     boolean exists(ID var1);
    10 
    11     Iterable<T> findAll();
    12 
    13     Iterable<T> findAll(Iterable<ID> var1);
    14 
    15     long count();
    16 
    17     void delete(ID var1);
    18 
    19     void delete(T var1);
    20 
    21     void delete(Iterable<? extends T> var1);
    22 
    23     void deleteAll();
    24 }

    CrudRepository的子接口PagingAndSortingRepository定义了与分页和排序操作相关的内容:

    1 @NoRepositoryBean
    2 public interface PagingAndSortingRepository<T, ID extends Serializable> extends CrudRepository<T, ID> {
    3     Iterable<T> findAll(Sort var1);
    4 
    5     Page<T> findAll(Pageable var1);
    6 }

    不同的数据访问技术也提供了不同的Repository,如Spring Data JPA有JpaRepository、Spring Data MongoDB有MongoRepository。Spring Data项目还给我们提供了一个激动人心的功能,即可以根据属性名进行计数、删除、查询方法等操作,

     1 public interface PersonRepository extends CustomRepository<Person, Long> {
     2     Long countByAge(Integer age);
     3     
     4     List<Person> findByAddress(String address);
     5     
     6     Person findByNameAndAddress(String name,String address);
     7     
     8     @Query("select p from Person p where p.name= :name and p.address= :address")
     9     
    10     Person withNameAndAddressQuery(@Param("name")String name,@Param("address")String address);
    11     
    12     Person withNameAndAddressNamedQuery(String name,String address);
    13 
    14 }
  • 相关阅读:
    node.js基础
    JQuery Ajax实例
    数组的模3特性
    浅析Java抽象类和接口的比较
    乐于分享是促进程序员进步非常重要的一个关键点【转载】
    网络图片的加载
    听一下牛人是怎样自学MIT计算机系全部课程的[转]
    我们为什么活着?别在20岁的时候过40岁的生活【转】
    根据字体多少使UILabel自动调节尺寸
    一个博士生学位论文致谢部分
  • 原文地址:https://www.cnblogs.com/kevin443/p/6724829.html
Copyright © 2011-2022 走看看