设为首页 - 加入收藏 ASP站长网(Aspzz.Cn)- 科技、建站、经验、云计算、5G、大数据,站长网!
热搜: 创业者 数据 手机
当前位置: 首页 > 运营中心 > 建站资源 > 优化 > 正文

一文搞懂如何在Spring Boot正确中使用JPA(6)

发布时间:2019-10-18 15:34 所属栏目:21 来源:SnailClimb
导读:查询满足某个范围的值。比如下面的方法就实现查询满足某个年龄范围的人员的信息。 @Query(value=selectnewgithub.snailclimb.jpademo.model.dto.UserDTO(p.name,p.age,c.companyName,s.name)+ fromPersonpleftjoinC

查询满足某个范围的值。比如下面的方法就实现查询满足某个年龄范围的人员的信息。

  1. @Query(value = "select new github.snailclimb.jpademo.model.dto.UserDTO(p.name,p.age,c.companyName,s.name) " + 
  2.             "from Person p left join Company c on  p.companyId=c.id " + 
  3.             "left join School s on p.schoolId=s.id " + 
  4.             "where p.age between :small and :big") 
  5.     List<UserDTO> filterUserInfoByAge(int small,int big); 

实际使用:

List userDTOS = personRepository.filterUserInfoByAge(19,20);

5.测试类和源代码地址

  1. @SpringBootTest 
  2. @RunWith(SpringRunner.class) 
  3. public class PersonRepositoryTest2 { 
  4.     @Autowired 
  5.     private PersonRepository personRepository; 
  6.  
  7.     @Sql(scripts = {"classpath:/init.sql"}) 
  8.     @Test 
  9.     public void find_person_age_older_than_18() { 
  10.         List<Person> personList = personRepository.findByAgeGreaterThan(18); 
  11.         assertEquals(1, personList.size()); 
  12.     } 
  13.  
  14.     @Sql(scripts = {"classpath:/init.sql"}) 
  15.     @Test 
  16.     public void should_get_user_info() { 
  17.         Optional<UserDTO> userInformation = personRepository.getUserInformation(1L); 
  18.         System.out.println(userInformation.get().toString()); 
  19.     } 
  20.  
  21.     @Sql(scripts = {"classpath:/init.sql"}) 
  22.     @Test 
  23.     public void should_get_user_info_list() { 
  24.         PageRequest pageRequest = PageRequest.of(0, 3, Sort.Direction.DESC, "age"); 
  25.         Page<UserDTO> userInformationList = personRepository.getUserInformationList(pageRequest); 
  26.         //查询结果总数 
  27.         System.out.println(userInformationList.getTotalElements());// 6 
  28.         //按照当前分页大小,总页数 
  29.         System.out.println(userInformationList.getTotalPages());// 2 
  30.         System.out.println(userInformationList.getContent()); 
  31.     } 
  32.  
  33.     @Sql(scripts = {"classpath:/init.sql"}) 
  34.     @Test 
  35.     public void should_filter_user_info() { 
  36.         List<String> personList=new ArrayList<>(Arrays.asList("person1","person2")); 
  37.         List<UserDTO> userDTOS = personRepository.filterUserInfo(personList); 
  38.         System.out.println(userDTOS); 
  39.     } 
  40.  
  41.     @Sql(scripts = {"classpath:/init.sql"}) 
  42.     @Test 
  43.     public void should_filter_user_info_by_age() { 
  44.         List<UserDTO> userDTOS = personRepository.filterUserInfoByAge(19,20); 
  45.         System.out.println(userDTOS); 
  46.     } 

六 总结

本节我们主要学习了下面几个知识点:

自定义 SQL 语句实现连表查询;

自定义 SQL 语句连表查询并实现分页操作;

条件查询:IN 查询,BETWEEN查询。

(编辑:ASP站长网)

网友评论
推荐文章
    热点阅读