通用Mapper進行分頁查詢

通用Mapper進行分頁查詢

什麼也不說,直接上代碼解釋。

1.1引入分頁助手依賴和通用Mapper依賴

<dependency>
			<!--通用Mapper依賴-->
            <groupId>tk.mybatis</groupId>
            <artifactId>mapper-spring-boot-starter</artifactId>
            <version>2.1.5</version>
        </dependency>
		<!--分頁助手依賴->
        <dependency>
            <groupId>com.github.pagehelper</groupId>
            <artifactId>pagehelper-spring-boot-starter</artifactId>
            <version>1.2.12</version>
        </dependency>

1.2DAO層

注意:不能導錯依賴 import tk.mybatis.mapper.common.Mapper

import com.mayday.auth.pojo.User;
import org.apache.ibatis.annotations.Delete;
import org.apache.ibatis.annotations.Insert;
import org.apache.ibatis.annotations.Param;
import tk.mybatis.mapper.common.Mapper;

public interface UserMapper extends Mapper<User> {
}

1.3Service層

 /**
     * 分頁查詢
     *
     * @param key    關鍵字查詢
     * @param page   頁數
     * @param size   每頁數量
     * @param desc   排序方式
     * @param sortBy 需要排序的字段
     * @param status 用戶狀態
     * @return
     */
    public PageResult<User> queryUserByPage(String key, int page, int size, Boolean desc, String sortBy, Boolean status) {
        //分頁
        PageHelper.startPage(page, size);
        //過濾
        Example example = new Example(User.class);
        if (status != null) {
            example.setDistinct(status);
        }
        if (StringUtils.isNotBlank(key)) {
            //過濾條件
            example.createCriteria().orLike("username", "%" + key.toLowerCase() + "%").orEqualTo("phone",key.toLowerCase());
        }
        //根據相應的字段進行排序
        if (StringUtils.isNotBlank(sortBy)) {
            String orderByClause = sortBy + (desc ? " DESC" : " ASC");
            example.setOrderByClause(orderByClause);
        }
        //查詢
        List<User> users = userMapper.selectByExample(example);
        if (CollectionUtils.isEmpty(users)) {
            return null;
        }
        users.stream().forEach(user -> user.setPassword(null));
        //解析分頁結果
        PageInfo<User> info = new PageInfo<>(users);
        return new PageResult<>(info.getTotal(), users);

    }

1.4Controller層

  /**
     * 分頁查詢
     * @param key
     * @param page
     * @param size
     * @param desc
     * @param sortBy
     * @param status
     * @return
     */
    @GetMapping("/userList")
    public Result queryUserByPage(@RequestParam(value = "key", required = false) String key,
                                  @RequestParam(value = "page", defaultValue = "1") Integer page,
                                  @RequestParam(value = "rows", defaultValue = "5") Integer size,
                                  @RequestParam(value = "desc", defaultValue = "false") Boolean desc,
                                  @RequestParam(value = "sortBy", required = false) String sortBy,
                                  @RequestParam(value = "status", required = false) Boolean status) {
        PageResult<User> pageResult = userService.queryUserByPage(key, page, size, desc, sortBy, status);
        if (pageResult == null) {
            return new Result(false, StatusCode.QUERY_FAIL);
        }
        return new Result(true, StatusCode.OK, pageResult);
    }
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章