find是CRUD中的R,是使用得最多的方法,此篇先整理下自带的find方法(不需要在dao层写对应接口),后续会整理下拓展方法
一、getById(通过id进行单个查询(跟findById差不多,返回值类型不一样))
service层
@Transactional
public User getById(Integer id){
return userDao.getById(id);
}
control层
@GetMapping("/getById")
public User getById(Integer id){
return userService.getById(id);
}
对id为27的数据进行查询,测试成功!
![](https://img-blog.csdnimg.cn/707cba99337140d48f59201720888cd6.png?x-oss-process=image/watermark,type_ZHJvaWRzYW5zZmFsbGJhY2s,shadow_50,text_Q1NETiBA6Iul5Y2a6LGG,size_17,color_FFFFFF,t_70,g_se,x_16)
后台执行了一行sql
![](https://img-blog.csdnimg.cn/38ce464fb2604114830d500026585891.png?x-oss-process=image/watermark,type_ZHJvaWRzYW5zZmFsbGJhY2s,shadow_50,text_Q1NETiBA6Iul5Y2a6LGG,size_20,color_FFFFFF,t_70,g_se,x_16)
二、findAll(对所有数据进行查询)
service层
@Transactional
public List<User> findAll(){
return userDao.findAll();
}
control层
/**
* 查询所有的数据
* @return 所有用户的列表
*/
@GetMapping("/findAll")
public List<User> findAll(){
return userService.findAll();
}
对所有数据进行查询,测试成功! ![](https://img-blog.csdnimg.cn/f346128afea440e782aa27ece4024fae.png?x-oss-process=image/watermark,type_ZHJvaWRzYW5zZmFsbGJhY2s,shadow_50,text_Q1NETiBA6Iul5Y2a6LGG,size_20,color_FFFFFF,t_70,g_se,x_16)
后台进行了一行sql![](https://img-blog.csdnimg.cn/b99e247a188146e6ba5d1a4071790905.png?x-oss-process=image/watermark,type_ZHJvaWRzYW5zZmFsbGJhY2s,shadow_50,text_Q1NETiBA6Iul5Y2a6LGG,size_20,color_FFFFFF,t_70,g_se,x_16)
三、findAllSort(查询所有数据并进行对应参数排序)
service层
@Transactional
public List<User> findAllSort(Sort ascOrDesc){
return userDao.findAll(ascOrDesc);
}
control层
/**
* 查询所有数据并进行排序
* @param sort 正序或者反序
* @param para 需要排序的参数
* @return
*/
@GetMapping("/findAllSort")
public List<User> findAllSort(String sort,String para){
Sort ascOrDesc;
if(sort.toLowerCase().equals("asc")){
//ascOrDesc = Sort.by(Sort.Direction.ASC,para);
ascOrDesc = JpaSort.unsafe(Sort.Direction.ASC,para);
} else {
ascOrDesc = Sort.by(Sort.Direction.DESC,para);
}
return userService.findAllSort(ascOrDesc);
}
按照age进行正序排序,测试正常!![](https://img-blog.csdnimg.cn/46ddbb12f9c149d4aa37e99935c3889c.png?x-oss-process=image/watermark,type_ZHJvaWRzYW5zZmFsbGJhY2s,shadow_50,text_Q1NETiBA6Iul5Y2a6LGG,size_20,color_FFFFFF,t_70,g_se,x_16)
后台进行了一行sql ![](https://img-blog.csdnimg.cn/21f505e626d84c3eaf898b340c9f9042.png?x-oss-process=image/watermark,type_ZHJvaWRzYW5zZmFsbGJhY2s,shadow_50,text_Q1NETiBA6Iul5Y2a6LGG,size_20,color_FFFFFF,t_70,g_se,x_16)
四、findAll(Example<S> example) (使用条件查询所有)(这个有点复杂还需要研究一下)
service层
@Transactional
public <S extends User> List<S> findByIdExample(Example<S> example){
return userDao.findAll(example);
}
control层
/**
* 对数据进行模糊查询
* @param name 需要查询的name
* @return
*/
@GetMapping("/findByIdExample")
public List<User> findByIdExample(String name){
User user = new User();
user.setName(name);
ExampleMatcher exampleMatcher = ExampleMatcher.matching()
.withMatcher("name", ExampleMatcher.GenericPropertyMatchers.contains())
.withMatcher("age", ExampleMatcher.GenericPropertyMatchers.exact())
.withIgnoreCase(true);
Example<User> example = Example.of(user,exampleMatcher);
return userService.findByIdExample(example);
}
查询所有name为刘佳丽的数据,测试成功!
![](https://img-blog.csdnimg.cn/799100f722af4505bfd2d675a7684d05.png?x-oss-process=image/watermark,type_ZHJvaWRzYW5zZmFsbGJhY2s,shadow_50,text_Q1NETiBA6Iul5Y2a6LGG,size_20,color_FFFFFF,t_70,g_se,x_16)
后台进行了一行sql
![](https://img-blog.csdnimg.cn/89864d406a1a42d5ad397b0b49336758.png?x-oss-process=image/watermark,type_ZHJvaWRzYW5zZmFsbGJhY2s,shadow_50,text_Q1NETiBA6Iul5Y2a6LGG,size_20,color_FFFFFF,t_70,g_se,x_16)
五、findAll(Pageable pageable) (用分页的方式获取所有数据)
service层
@Transactional
public Page<User> findAllPage(Pageable pageable){
return userDao.findAll(pageable);
}
control层
/**
* 对数据进行分页查询
* @param page 页数 从0开始
* @param size 页面大小(每页数据多少)
* @param sort 排序
* @param name 排序对象
* @return
*/
@GetMapping("/findAllPage")
public Page<User> findAllPage(Integer page,Integer size,String sort,String name){
Pageable pageable = PageRequest.of(page, size,
sort == "desc"? Sort.Direction.DESC : Sort.Direction.ASC, name);
return userService.findAllPage(pageable);
}
pagerequest源码里面of后面有三种传参方式,page和size是必填的,后面的排序和排序参数选填
![](https://img-blog.csdnimg.cn/d7a3bdfc164b4570b09f0e9d9d21e05c.png?x-oss-process=image/watermark,type_ZHJvaWRzYW5zZmFsbGJhY2s,shadow_50,text_Q1NETiBA6Iul5Y2a6LGG,size_20,color_FFFFFF,t_70,g_se,x_16)
网页测试成功!![](https://img-blog.csdnimg.cn/825debfea05f48b9918b8065aede8117.png?x-oss-process=image/watermark,type_ZHJvaWRzYW5zZmFsbGJhY2s,shadow_50,text_Q1NETiBA6Iul5Y2a6LGG,size_20,color_FFFFFF,t_70,g_se,x_16)
出参如图:
![](https://img-blog.csdnimg.cn/423aa26461e6475f825dd574a6b0eac7.png?x-oss-process=image/watermark,type_ZHJvaWRzYW5zZmFsbGJhY2s,shadow_50,text_Q1NETiBA6Iul5Y2a6LGG,size_9,color_FFFFFF,t_70,g_se,x_16)
后台执行了两条jpql
![](https://img-blog.csdnimg.cn/16b6466a62eb400785ac081113a17cc8.png?x-oss-process=image/watermark,type_ZHJvaWRzYW5zZmFsbGJhY2s,shadow_50,text_Q1NETiBA6Iul5Y2a6LGG,size_20,color_FFFFFF,t_70,g_se,x_16)