Spring Data JPA

Spring Data

Spring Data是Spring的一个子项目,用于简化数据库访问,包括NoSQL非关系型数据库,及关系型数据库的访问支持。Spring Data可以快速简单使用普通的数据访问技术及新的数据访问技术,使得数据的访问变得更加方便。
Spring Data项目提供了数据访问操作数据的统一规范,该规范约定了关系型数据库和非关系型数据库操作的统一标准。主要包含CRUD操作、相关参数查询、分页操作、排序操作等。
Spring Data通过提供Repository接口来约定数据访问的统一标准。Repository接口的源码:

public interface Repository<T,ID extends Serializable>{

}

Repository接口的子接口描述
在这里插入图片描述

Spring data-示例-简单条件查询知识点

1.findByName(String name)方法等同于JPQL语句:select s from Student s where s.name = ?1,因为by是条件关键字,name是条件属性,所以首字母必须大写。
2.findByNameAndAddress(String name,String address)方法相当于JPQL语句:select s from Student s where s.name = ?1 and s.address = ?2, by和and是条件关键字,name和address是条件属性。
3.findByNameLike(String name)方法,相当于JPQL语句:select s from Student s where s.name like ?1, by和like是条件关键字,name是条件属性。

关联查询和@Query查询

对于两个有关联关系的对象的查询,可以通过方法名中的“_”来标识。同时

Spring Data JPA开发

spring data JPA极大的简化了JPA的写法,在几乎不用写接口实现的情况下完成对数据的访问和操作,Spring Data JPA是Spring Data下的一个模块,先掌握Spring Data项目的相关技术。使用spring data JPA访问数据只需数据访问层接口实现JpaRepository接口即可,因为JpaRepository继承自PagingAndSortingRepository接口,所以也拥有了相关的功能操作。JapRepository接口封装了常用的一些方法,使用方式都类似,同时按照Spring Data定义的规则,也可以在数据访问层接口中定义一些查询方法来完成数据的访问操作。

JpaRepositoty是基于JPA的Repository接口,它极大的减少了JPA作为数据访问的代码,是实现Spring Data JPA技术访问数据库的关键接口

示例:简单条件查询项目(相关方法总结)

findByName(String name)等同于“select s from Student s where s.name=?1”
findByNameAndAddress(String name,String address)等同于“select s from Student s where s.name=?1 and s.address=?2”
findByNameLike(String name)等同于“select s from Student s where s.name like ?1”

示例:关联查询和@Query查询

--List<Student> findByClazz_name(String clazzName)方法是管联查询的方法,关联的属性用“_”来连接,相当于“select s from Student s where s.clazz.name = ?1”
--@Query("select s from Student s where s.clazz.name = ?1")定义在List<Student> findByClazz_name(String clazzName)方法上,与List<Student> findByClazz_name(String clazzName)方法的功能完全是一致的,只是这里采用的是@Query注解的形式进行查询。“?1”指代的是取方法形参列表中的第一个参数值,1代表的是参数位置。
--@Query("select new Map(s.name as name,s.sex as sex)"+"from Student s where s.clazz.name=?1")
	List<Map<String,Object>>findNameAndSexByClazzName(String clazzName);
	此方法使用JPQL语句直接返回List<Map<String,Object>>对象。
--@Query("select s.name from Student s where s.clazz.name = :clazzName and s.sex = :sex")
	List<String>findNameByClazzNameAndSex(@Param("clazzName")String clazzName,@param("sex"char sex);
	Spring Data JPA还支持用名臣来匹配回去参数的值,使用格式为“ :参数名称“。
--@Query(”select c.name from Clazz c inner join c.students s where s.name = ?1")
	String findClazzNameByStuName(String stuName)
	此方法,是想了关联查询,某个学生所属的班级的名称
--@Modify
--@Query("delete from Student s where s.name = ?1")
	int deleteStuByStuName(String stuName)
	此方法,Spring Data JPA 支持使用@Modify和@Query注解组合更新查询操作。删除了某学生数据

Specification查询

--T findOne(Specification<T> spec); "根据Specification接口封装的查询条件,查询单一实例"
--List<T> findAll(Specification<T> spec);“根据Specification接口封装的查询条件,查询满足条件的所有对象数据,返回的是List集合”
--Page<T> findAll(Specification<T> spec,Pageable pageable);根据Specification接口封装的查询条件以及Pageable封装的分页及排序规则查询出满足条件的对象数据,返回的是page对象,
--List<T> findAll(Specification<T> spec,Sort sort);根据Specification接口封装的查询条件以及Sort封装的排序规则查询出满足添加的所有对象数据,返回的是List集合。
--Long count(Specification<T> spec);根据Specification接口封装的查询条件,查询出满足条件的数据总数。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值