java项目分页功能

发布于:2025-02-10 ⋅ 阅读:(37) ⋅ 点赞:(0)

1.创建一个实体类

@Data
@Schema(description = "SysRole")
public class SysRole extends BaseEntity {

    private static final long serialVersionUID = 1L;

    @Schema(description = "角色名称")
    private String roleName;

    @Schema(description = "角色编码")
    private String roleCode;

    @Schema(description = "描述")
    private String description;

}

2.创建controller层

// 跨域配置:允许携带凭证,允许所有来源模式,允许所有请求头
@CrossOrigin(allowCredentials = "true", originPatterns = "*", allowedHeaders = "*")
@RestController  // 声明为RESTful风格控制器
@RequestMapping("/admin/system/sysRole")  // 控制器根路径映射
public class SysRoleController {
    @Autowired  // 自动注入业务层接口
    private SysRoleService sysRoleService;

    /**
     * 分页查询角色列表
     * @param page   当前页码(通过路径变量获取)
     * @param limit  每页显示条数(通过路径变量获取)
     * @param sysRoleDto 角色查询条件对象(自动绑定请求参数)
     * @return 统一响应结果封装的分页数据
     */
    @GetMapping("/getSysRoleListByPage/{page}/{limit}")  // GET请求映射,包含路径参数
    public Result<PageInfo<SysRole>> getSysRoleListByPage(
            @PathVariable Integer page,     // 从URL路径中获取page参数
            @PathVariable Integer limit,    // 从URL路径中获取limit参数
            SysRoleDto sysRoleDto) {        // 自动绑定请求中的查询参数到DTO对象
        
        // 调用业务层方法进行分页查询
        PageInfo<SysRole> pageInfo = sysRoleService.getSysRoleListByPage(page, limit, sysRoleDto);
        
        // 返回统一封装的响应结果
        return Result.ok(pageInfo);
    }
}

3.创建service层

public interface SysRoleService {
    PageInfo<SysRole> getSysRoleListByPage(Integer page, Integer limit, SysRoleDto sysRoleDto);
}

4.创建mapper

public interface SysRoleService {
    PageInfo<SysRole> getSysRoleListByPage(Integer page, Integer limit, SysRoleDto sysRoleDto);
}

5.imp

import com.github.pagehelper.PageHelper;
import com.github.pagehelper.PageInfo;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import java.util.List;

// 使用 @Service 注解将该类标记为 Spring 的服务层组件,Spring 会自动扫描并将其注册为 Bean
@Service
public class SysRoleServiceImpl implements SysRoleService {

    // 使用 @Autowired 注解自动注入 SystemMapper 实例,用于与数据库进行交互
    @Autowired
    private SystemMapper systemMapper;

    /**
     * 根据分页参数和查询条件获取系统角色列表的分页信息
     *
     * @param page       当前页码,用于指定要查询的页面
     * @param limit      每页显示的记录数,用于控制每页展示的角色数量
     * @param sysRoleDto 系统角色数据传输对象,包含查询条件,如角色名称等
     * @return 包含系统角色列表的分页信息对象,其中包含当前页数据、总记录数、总页数等信息
     */
    @Override
    public PageInfo<SysRole> getSysRoleListByPage(Integer page, Integer limit, SysRoleDto sysRoleDto) {
        // 调用 PageHelper 的 startPage 方法开启分页功能,设置当前页码和每页显示的记录数
        // 后续的查询操作会自动根据这些分页参数进行分页查询
        PageHelper.startPage(page, limit);

        // 调用 SystemMapper 的 selectSysRoleListByPage 方法,根据查询条件查询系统角色列表
        // 查询结果会根据前面设置的分页参数进行分页
        List<SysRole> sysRoles = systemMapper.selectSysRoleListByPage(sysRoleDto);

        // 将查询得到的系统角色列表封装到 PageInfo 对象中
        // PageInfo 对象会自动计算总记录数、总页数等分页信息
        PageInfo<SysRole> pageInfo = new PageInfo<>(sysRoles);

        // 返回包含分页信息的 PageInfo 对象
        return pageInfo;
    }
}

6.mapper

public interface SystemMapper {

    List<SysRole> selectSysRoleListByPage(SysRoleDto sysRoleDto);
}

7.mapper.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="com.atguigu.spzx.manager.mapper.SystemMapper" >

    <select id="selectSysRoleListByPage" resultType="com.atguigu.spzx.model.entity.system.SysRole">
        select *
        from sys_role
        <where>
            <!-- 如果 roleName 不为空,则添加模糊查询条件 -->
            <if test="roleName != null and roleName != ''">
                role_name like concat('%', #{sysRoleDto.roleName}, '%')
            </if>
            <!-- 确保只查询未删除的数据 -->
            and is_deleted = 0
        </where>
    </select>
</mapper>

依赖mybatis插件

            <dependency>
                <groupId>com.github.pagehelper</groupId>
                <artifactId>pagehelper-spring-boot-starter</artifactId>
                <version>${pagehelper.version}</version>
            </dependency>


网站公告

今日签到

点亮在社区的每一天
去签到