spring boot中实现手动分页

手动分页

  1. UserMapper.xml
xml 复制代码
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd" >
<mapper namespace="cn.mayanan.restapi.mapper.UserMapper">
    <!-- 在复杂的sql查询中,使用resultMap是最佳实践, 它能清晰的定义嵌套对象的映射规则 -->
    <resultMap id="userResultMap" type="cn.mayanan.restapi.bean.UserBean">
        <id column="id" property="id" />
        <result column="name" property="username" />
        <result column="password" property="password" />
    </resultMap>

    <!-- 查询所有用户信息 -->
    <select id="getAllUsers" parameterType="map" resultMap="userResultMap">
        select id, name, password from user
        order by id
        limit #{pageSize}
        offset #{offset}
    </select>
</mapper>
  1. UserMapper.java
java 复制代码
package cn.mayanan.restapi.mapper;

import org.apache.ibatis.annotations.Mapper;
import cn.mayanan.restapi.bean.UserBean;
import org.apache.ibatis.annotations.Param;

import java.util.List;
import java.util.Map;

@Mapper
public interface UserMapper {
    List<UserBean> getAllUsers(Map<String, Object> params);
}
  1. UserService.java
java 复制代码
package cn.mayanan.restapi.service;

import cn.mayanan.restapi.bean.UserBean;

import java.util.List;
import java.util.Map;

public interface UserService {
    UserBean queryUserById(int id);

    List<UserBean> queryAllUser(Map<String, Object> params);
}
  1. UserServiceImpl.java
java 复制代码
package cn.mayanan.restapi.serviceImpl;

import cn.mayanan.restapi.bean.UserBean;
import cn.mayanan.restapi.mapper.UserMapper;
import cn.mayanan.restapi.service.UserService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

import java.util.List;
import java.util.Map;

@Service
public class UserServiceImpl implements UserService {
    // 将Dao注入Service层
    private final UserMapper userMapper;
    @Autowired
    public UserServiceImpl(UserMapper userMapper) {
        this.userMapper = userMapper;
    }

    // 查询所有用户信息
    @Override
    public List<UserBean> queryAllUser(Map<String, Object> params) {
        return userMapper.getAllUsers(params);
    }
}
  1. UserController.java
java 复制代码
package cn.mayanan.restapi.controller;

import cn.mayanan.restapi.bean.UserBean;
import cn.mayanan.restapi.service.UserService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.http.ResponseEntity;
import org.springframework.http.HttpStatus;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.*;

import java.util.HashMap;
import java.util.List;
import java.util.Map;

// @RestController是一个方便的注解,它结合了@Controller和@ResponseBody注解
@RestController  // 标注为Rest控制器
@RequestMapping("/api")  // 定义基础路径
public class MyRestController {
    // 将Service注入Controller层
    private final UserService userService;
    @Autowired
    public MyRestController(UserService userService) {
        this.userService = userService;
    }

    // 查询所有用户信息
    @GetMapping("/users")
    public List<UserBean> showUsers(
            @RequestParam(value = "pageSize", defaultValue = "1") int pageSize,
            @RequestParam(value = "pageNum", defaultValue = "1") int pageNum
    ) {
        System.out.println("pageSize: " + pageSize + ", pageNum: " + pageNum);
        // 手动分页
        Map<String, Object> map = new HashMap<>();
        int offset = (pageNum - 1) * pageSize;
        map.put("pageSize", pageSize);
        map.put("offset", offset);
        return userService.queryAllUser(map);
    }
}
相关推荐
茶本无香9 分钟前
Arthas 实战:线上“看 Map”的四种武器
java·map·arthas·线上定位
烂蜻蜓1 小时前
Flask入门教程(二十六):Session API——用户会话状态管理
后端·python·flask
霸道流氓气质1 小时前
Spring AI异常处理与重试机制
java·人工智能·spring
郑州光合科技余经理3 小时前
本地生活服务系统:成品模块和定制接口怎么划界
java·前端·人工智能·后端·系统架构·php·ai编程
萧瑟余晖3 小时前
Java深入解析篇三十三之密封类与接口(Sealed Classes)详解
java·开发语言
论迹复利7 小时前
FreeRTOS 在 RISC-V 上是如何“点火“的 —— 从 main() 到第一个任务的完整链路
java·开发语言·risc-v
张宇Joaquin7 小时前
鲲鹏统一并行加速库KUPL--众核并行能力介绍
java·开发语言·网络
宸津-代码粉碎机8 小时前
AI攻防战升级!基于Spring AI构建Java应用自动免疫安全体系
java·大数据·开发语言·人工智能·python·安全·spring
2601_963749109 小时前
越华环保集团数字化污水治理:端边云采集架构与平台对接实现
java·大数据·架构
朦胧之9 小时前
PostgreSQL 数据库笔记
人工智能·后端