准备利用闲暇的碎片时间研究一下spring data的应用,因此可能会分多次进行更新。官网地址:https://spring.io/projects/spring-data
spring data的部分常用子集
spring data commons :包含spring data的核心基础库。
spring data jdbc : spring data对jdbc支持的库。
spring data jdbc ext :支持特定数据库的标准JDBC扩展,包括支持Oracle RAC快速连接故障转移、AQ JMS支持和支持使用一些高级数据类型。
spring data jpa :spring data对jpa支持的类库。
spring data redis :通过简单配置就能轻松访问Redis的类库。
spring data jdbc
基于CrudRepository的增删改查。
基于注解的查询。
mybatis支持。
id生成器。
支持事件驱动。
核心接口CrudRepository
public interface CrudRepository<T, ID> extends Repository<T, ID> {
<S extends T> S save(S entity); //保存entity到数据库
Optional<T> findById(ID primaryKey); //跟据id查寻entity
Iterable<T> findAll(); //查询所有entity
long count(); //统计计数
void delete(T entity); //删除指定的entity
boolean existsById(ID primaryKey); //跟据id查询是否存在
// … 还有很多方法在此不列举了.
}
继承该接口后,spring data 会跟据自定义的方法名自动转化成sql。如:
interface UserRepository extends CrudRepository<User, Long> {
long countByLastname(String lastname); //开发人员自定义此方法后,spring data会自动转化成sql:"select count(1) from user where lastname=:lastname"
long deleteByLastname(String lastname); //自定义此方法后,执行即可删除数据库中的指定数据
List<User> removeByLastname(String lastname); //自定义此方法后,执行即可删除数据库中的指定数据
}
分页排序接口PagingAndSortingReposity
public interface PagingAndSortingRepository<T, ID> extends CrudRepository<T, ID> {
Iterable<T> findAll(Sort sort);
Page<T> findAll(Pageable pageable);
}
例如,查询前20条数据,可以这么写:
PagingAndSortingRepository<User, Long> repository = // … 获取实体类
Page<User> users = repository.findAll(PageRequest.of(1, 20));
一、在pom文件中添加依赖:
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.springframework.data</groupId>
<artifactId>spring-data-jpa</artifactId>
</dependency>
</dependencies>
<dependencyManagement>
<dependencies>
<dependency>
<groupId>org.springframework.data</groupId>
<artifactId>spring-data-releasetrain</artifactId>
<version>Lovelace-SR8</version>
<scope>import</scope>
<type>pom</type>
</dependency>
</dependencies>
</dependencyManagement>