SpringData JPA分页查询
程序员文章站
2022-04-30 13:59:28
...
首先我们需要知道SpringData JPA 的几个接口
其实看名字就大概懂了,也可以很方便的使用
首先我们的持久化层继承JpaRepository,相当于继承了增删改查的持久化层以及分页查询的持久化层
所以如果我们要使用分页查询 ,我们只需要直接调用
由一开始的图也可以看到Pageable的其中一个实现,直接新建一个对象传给你的持久层即可
下面是一个小Demo的例子
package Dao;
import org.springframework.data.jpa.repository.JpaRepository;
import org.springframework.data.jpa.repository.Modifying;
import org.springframework.data.jpa.repository.Query;
import org.springframework.data.repository.query.Param;
import org.springframework.transaction.annotation.Transactional;
import Entity.Student;
//不需要使用事物注解,因为Spring已经默认帮我们开启 当然我们可以利用注解进行额外的设置
//对数据进行除了查询之外我们都需要加入事物注解不然报错 这是我个人测试
public interface StudentDao extends JpaRepository,CommonDao{
@Query("from Student s where s.sid = ?1")
Student findById(String id);
// 两种写法一样
// @Query("select * from Student s where s.sid = :id")
// Student findById(@Param("id")String id);
@Transactional
@Query("delete from Student s where s.sid = ?1")
@Modifying//更新或者删除需要额外加这个注解
void deleteById(String id);
//父类方法直接调用 findAll(Pageable pageable)
}
//Service 层
public Page findAll(Pageable pageable) {
// TODO Auto-generated method stub
return studentDao.findAll(pageable);
}
//Controller
@RequestMapping("/findAll")
public Page findAll(@RequestParam("f")int pageNum,@RequestParam("m")int size){
return studentService.findAll(new PageRequest(pageNum, size));
}
{"content":[{"sid":"1","sname":"sam","sage":1},{"sid":"2","sname":"2","sage":2},{"sid":"3","sname":"3","sage":3}],"totalPages":1,"totalElements":3,"last":true,"number":0,"size":20,"numberOfElements":3,"sort":null,"first":true}