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>