Springboot pageHelper總結
阿新 • • 發佈:2022-04-16
Springboot上使用pageHelper總結
1. 在pom.xml 中引入依賴
<!--pagehelper-->
<dependency>
<groupId>com.github.pagehelper</groupId>
<artifactId>pagehelper-spring-boot-starter</artifactId>
<version>1.2.5</version>
</dependency>
之後直接在要訪問資料庫的mapper介面之前使用pageHelper即可,十分簡單
@PostMapping("/allUser")
public PageInfo<User> allUser() {
PageHelper.startPage(2,3);
List<User> users = userMapper.findAllUser();
PageInfo<User> pageInfo = new PageInfo<>(users);
return pageInfo;
}
經測試,這裡實際上是執行了兩條SQL語句(與我的猜測一致)
c.g.m.m.UserMapper.findAllUser_COUNT : ==> Preparing: SELECT count(0) FROM user c.g.m.m.UserMapper.findAllUser_COUNT : ==> Parameters: c.g.m.m.UserMapper.findAllUser_COUNT : <== Total: 1 c.g.m.mapper.UserMapper.findAllUser : ==> Preparing: SELECT * FROM user LIMIT ?, ? c.g.m.mapper.UserMapper.findAllUser : ==> Parameters: 3(Integer), 3(Integer) c.g.m.mapper.UserMapper.findAllUser : <== Total: 3
執行了一條統計總數(where 真正要執行的sql的條件)的SQL 和 真正的SQL
順便檢查出來了我的一個SQL上理解的錯誤:
Limit x, y 指的是從x的下一條資料開始,包含y條資料資料的集合(不包含x)
2. 執行的mapper介面一旦在上面使用了PageHelper.startPage(x,y); 之後返回的物件其實不再是List物件了,而是一個Page物件(繼承於ArrayList)
class Page<E> extends ArrayList<E> implements Closeable
Page 物件中儲存了兩次SQL返回的資訊,這樣就得到了total的值
PS: 經測試如果mapper介面之上沒有使用PageHelper.startPage(x,y);則返回的還是ArrayList
3. 要拿到total的值需要用PageInfo做一層封裝即可
PageInfo<User> pageInfo = new PageInfo<>(users);