一文搞懂 Spring JPA( 三 )


@Testpublic void testQuery throws Exception {User user=new User;userRepository.findAll;userRepository.findOne(1l);userRepository.save(user);userRepository.delete(user);userRepository.count;userRepository.exists(1l);……}7.自定义的简单查询就是根据方法名来自动生成SQL,主要的语法是`findXXBy,readAXXBy,queryXXBy,countXXBy, getXXBy`后面跟属性名称,举几个例子:
User findByUserName(String userName);User findByUserNameOrEmail(String username, String email);Long deleteById(Long id);Long countByUserName(String userName);List<User> findByEmailLike(String email);User findByUserNameIgnoreCase(String userName);List<User> findByUserNameOrderByEmailDesc(String email);8.接下来,我们说下复杂的查询,在实际的开发中我们需要用到分页、删选、连表等查询的时候就需要特殊的方法或者自定义 SQL,以分页查询为例,分页查询在实际使用中非常普遍了,spring data jpa已经帮我们实现了分页的功能,在查询的方法中,需要传入参数Pageable,当查询中有多个参数的时候Pageable建议做为最后一个参数传入 。Pageable是 spring 封装的分页实现类,使用的时候需要传入页数、每页条数和排序规则
Page<User> findALL(Pageable pageable);Page<User> findByUserName(String userName,Pageable pageable);9.我们看下下面的测试用例
@Testpublic void testPageQuery throws Exception {int page=1,size=5;Sort sort = new Sort(Direction.DESC, "id");Pageable pageable = new PageRequest(page, size, sort);userRepository.findALL(pageable);userRepository.findByUserName("testName", pageable);}10. Spring data 大部分的 SQL 都可以根据方法名定义的方式来实现,但是由于某些原因我们想使用自定义的 SQL 来查询,spring data 也是完美支持的,如下所示:
@Modifying@Query("update User u set u.userName = ?1 where c.id = ?2")int modifyByIdAndUserId(String userName, Long id);@Transactional@Modifying@Query("delete from User where id = ?1")void deleteByUserId(Long id);@Transactional(timeout = 10)@Query("select u from User u where u.emailAddress = ?1")User findByEmailAddress(String emailAddress);好啦,以上就是关于spring data jpa 的介绍 。


【一文搞懂 Spring JPA】


推荐阅读