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接口:

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

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

 @NoRepositoryBean
public interface CrudRepository<T, ID extends Serializable> extends Repository<T, ID> {
<S extends T> S save(S var1); <S extends T> Iterable<S> save(Iterable<S> var1); T findOne(ID var1); boolean exists(ID var1); Iterable<T> findAll(); Iterable<T> findAll(Iterable<ID> var1); long count(); void delete(ID var1); void delete(T var1); void delete(Iterable<? extends T> var1); void deleteAll();
}

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

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

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

 public interface PersonRepository extends CustomRepository<Person, Long> {
Long countByAge(Integer age); List<Person> findByAddress(String address); Person findByNameAndAddress(String name,String address); @Query("select p from Person p where p.name= :name and p.address= :address") Person withNameAndAddressQuery(@Param("name")String name,@Param("address")String address); Person withNameAndAddressNamedQuery(String name,String address); }

出入Spring boot(六)数据访问的更多相关文章

  1. Spring Boot的数据访问:CrudRepository接口的使用

    示例 使用CrudRepository接口访问数据 创建一个新的Maven项目,命名为crudrepositorytest.按照Maven项目的规范,在src/main/下新建一个名为resource ...

  2. (8)Spring Boot 与数据访问

    文章目录 简介 整合基本的JDBC与数据源 整合 druid 数据源 整合 mybatis 简介 对于数据访问层,无论是 SQL 还是 NOSQL ,Spring Boot 默认都采用整合 Sprin ...

  3. Spring Boot实现数据访问计数器

    1.数据访问计数器   在Spring Boot项目中,有时需要数据访问计数器.大致有下列三种情形: 1)纯计数:如登录的密码错误计数,超过门限N次,则表示计数器满,此时可进行下一步处理,如锁定该账户 ...

  4. Spring Boot的数据访问 之Spring Boot + jpa的demo

    1. 快速地创建一个项目,pom中选择如下 <?xml version="1.0" encoding="UTF-8"?> <project x ...

  5. Spring Boot框架 - 数据访问 - 整合Mybatis

    一.新建Spring Boot项目 注意:创建的时候勾选Mybatis依赖,pom文件如下 <dependency> <groupId>org.mybatis.spring.b ...

  6. Spring Boot框架 - 数据访问 - JDBC&自动配置

    一.新建Spring Boot 工程 特殊勾选数据库相关两个依赖 Mysql Driver — 数据库驱动 Spring Data JDBC 二.配置文件application.properties ...

  7. Spring Boot(六):如何使用mybatis

    Spring Boot(六):如何使用mybatis orm框架的本质是简化编程中操作数据库的编码,发展到现在基本上就剩两家了,一个是宣称可以不用写一句SQL的hibernate,一个是可以灵活调试动 ...

  8. Spring MVC或Spring Boot配置默认访问页面不生效?

    相信在开发项目过程中,设置默认访问页面应该都用过.但是有时候设置了却不起作用.你知道是什么原因吗?今天就来说说我遇到的问题. 首先说说配置默认访问页面有哪几种方式. 1.tomcat配置默认访问页面 ...

  9. Spring boot未授权访问造成的数据库外联

    一.spring boot 日常测试或攻防演练中像shiro,fastjson等漏洞已经越来越少了,但是随着spring boot框架的广泛使用,spring boot带来的安全问题也越来越多,本文仅 ...

随机推荐

  1. Linux 下添加用户,修改权限

    最近在用虚拟机,安装了centos,现在想新添加一个用户,在网上找了找方法.[原文链接] # useradd –d /usr/sam -m sam 此命令创建了一个用户sam,其中-d和-m选项用来为 ...

  2. [MongoDB]学习笔记--基本操作

    读取 db.collection.find() db.users.find( { age: {$gt: }}, {name: , address: } ).limit().sort({age:1}) ...

  3. nvm-windows 手动安装 nvm use 无效 'node' 不是内部或外部命令,也不是可运行的程序

    按照这两位前辈的教程,安装了nvm-windows. http://www.cnblogs.com/yesyes/p/7403184.html http://blog.csdn.net/jingsi1 ...

  4. CodeForces 663A Rebus

    A. Rebus time limit per test 1 second memory limit per test 256 megabytes input standard input outpu ...

  5. vitess数据中心迁移步骤

    在使用vitess的时候我们会遇到刚开始所有的元数据都在同一个ETCD集群中,后续随着业务的增长需要进行数据中心拆分: 分别拆分成多个Local集群的数据中心: 以下就简单说明下迁移步骤: 迁移拓扑图 ...

  6. php and mysql pear的安装

    http://www.cnblogs.com/bugY/archive/2012/07/06/2578972.html 什么是PEAR 来自百度百科:PEAR是PHP扩展与应用库(the PHP Ex ...

  7. client-side internet transfers

    curl https://curl.haxx.se/ curl - Open Collective https://opencollective.com/curl#backers curl/curl: ...

  8. Numba makes Python code fast

    Numba: A High Performance Python Compiler http://numba.pydata.org/ 一行代码让python的运行速度提高100倍,你信吗?-聚能聊-云 ...

  9. LIMIT Query Optimization

    LIMIT limitFrom , perPageNum LIMIT offset, size MySQL :: MySQL 8.0 Reference Manual :: 13.2.10 SELEC ...

  10. 指定文件夹 指定文件后缀名 删除整个文件夹 git 冲突解决 create a new repository on the command line push an existing repository from the command line

    http://www.liaoxuefeng.com/wiki/0013739516305929606dd18361248578c67b8067c8c017b000/001375840038939c2 ...