Spring Data JPA(1)--Repository和CrudRepository接口
2017-12-22 13:32
477 查看
最近在学习Spring Data JPA的相关知识,感觉还是很不错的,提供了很多方法,包括CRUD和分页排序,基本能够满足现实的功能需求.
它一共提供了四个接口:
Repository: 仅仅是一个标识,表明任何继承它的均为仓库接口类,方便Spring自动扫描识别
CrudRepository: 继承Repository,实现了一组CRUD相关的方法
PagingAndSortingRepository: 继承CrudRepository,实现了一组分页排序相关的方法
JpaRepository: 继承PagingAndSortingRepository,实现一组JPA规范相关的方法
JpaSpecificationExecutor: 比较特殊,不属于Repository体系,实现一组JPA Criteria查询相关的方法
我写的实例:
源代码所提供的方法:
它一共提供了四个接口:
Repository: 仅仅是一个标识,表明任何继承它的均为仓库接口类,方便Spring自动扫描识别
CrudRepository: 继承Repository,实现了一组CRUD相关的方法
PagingAndSortingRepository: 继承CrudRepository,实现了一组分页排序相关的方法
JpaRepository: 继承PagingAndSortingRepository,实现一组JPA规范相关的方法
JpaSpecificationExecutor: 比较特殊,不属于Repository体系,实现一组JPA Criteria查询相关的方法
我写的实例:
/* * @RepositoryDefinition(domainClass = User.class,idClass = Integer.class)//使用该注解可以替代extends Repository */ public interface UserRepository extends CrudRepository<User, Integer>{ /* * Repository接口,他是一个空接口,仅仅是一个标识 */ //hql操作的是对象,而sql操作的是表,所以这里的User指的是类 //可以直接使用Repository提供的一些方法,但是必须方法的命名要遵守一定的规则,例如findByXx,findByXxLike,findByXxStartingWith... public User findByUname(String uname); //使用@Query注解来解决定义规则的麻烦和实现复杂查询,工作中用的比较多 @Query("select o from User o") public List<User> showUsers(); @Query("select o from User o where o.uno = ?1 and o.uname = ?2") public User findUser(int uno,String uname); //配合@Modifying注解和事务,可以完成更新和删除的操作,jpql不支持增加的操作 @Modifying @Query("delete from User where uno=:uno") public void delUser(@Param("uno")int uno); @Modifying @Query("update User o set o.uname = :uname where uno = :uno") public void updUser(@Param("uno")int uno,@Param("uname")Str 4000 ing uname); /* * CrudRepository接口继承Repository,提供了一组CRUD相关的方法,直接在测试类中测试findOne方法 */ }CrudRepository接口
源代码所提供的方法:
<S extends T> S save(S entity); <S extends T> Iterable<S> save(Iterable<S> entities); T findOne(ID id); boolean exists(ID id); Iterable<T> findAll(); Iterable<T> findAll(Iterable<ID> ids); long count(); void delete(ID id); void delete(T entity); void delete(Iterable<? extends T> entities); void deleteAll();以findOne()方法为例,在单元测试中进行测试
public class UserRepositoryTest { private ApplicationContext ctx = null; private UserRepository userRepository = null; @Before public void setUp(){ ctx = new ClassPathXmlApplicationContext("beans.xml"); userRepository = ctx.getBean(UserRepository.class); System.out.println("setup"); } @After public void tearDown(){ ctx = null; System.out.println("teardown"); } @Test public void testQuery3(){ System.out.println("start"); User user = userRepository.findOne(1); System.out.println(user.toString()); System.out.println("started"); }
}
相关文章推荐
- 结合SpringDataJPA中的PagingAndSortingRepository和 JpaSpecificationExecutor接口实现大数据量的数据分页查询
- Spring Data JPA: 为所有Repository添加自定义方法
- 测试Spring Data JPA的repository
- 【SpringData】轻松愉快之玩转SpringData( 第5章 CrudRepository PagingAndSortingRespsitory JpaRepository接口)
- 一步一步学SpringDataJpa——JpaRepository基本功能(Curd)
- Spring-Data-JPA 中的JpaRepository相关介绍
- Spring boot data JPA 自定义JPQL语句,以及PagingAndSortingRepository接口实现分页查询
- Spring Data JPA Entity Repository 多路径配置
- spring data实现自定义的repository实现类,实现跟jpa联通
- SpringdataJpa JpaRepository
- 【SpringBoot学习笔记】SpringBoot_01_SpringData—JpaRepository查询功能
- Spring Data JPA: 为所有Repository添加自定义方法
- 【SpringBoot学习笔记】SpringBoot_03_SpringData—JpaRepository部分字段查询功能
- Spring Data JPA: 为单个Repository添加自定义方法
- Spring Data JPA教程, 第八部分:Adding Functionality to a Repository (未翻译)
- Spring Data Jpa 自定义 Repository EntityManager is null
- 初识Spring Data与JPA Repository
- Spring技术内幕之Spring Data JPA-自定义Repository实现
- Spring Data JPA: 实现自定义Repository
- Spring Data Jpa ---- repository