2108-10用户列表分页以及查询

左侧菜单展现

搭建层级代码

表设计说明

sql语句

select * from rights where parent_id=0;查询所有的一级菜单

select * from rights where parent_id=1;查询用户管理的二级菜单

select * from rights where parent_id=2;查询用户列表三级菜单

关于Rights Pojo说明

@Data
@Accessors(chain = true)
public class Rights extends BasePojo{
    private Integer id;
    private String name;
    private Integer parentId;
    private String level;
    private List<Rights> children;//不是表格固有属性
}

接口文档说明

请求路径/rights/getRightsList

请求类型GET

请求参数 无

响应数据SysResult对象

参数名称参数说明备注
status状态信息200表示服务器请求成功,201表示服务器异常
msg服务器返回的提示信息可以为null
data服务器返回的业务数据返回权限List集合

响应数据如图所示:

在这里插入图片描述

 分析可以得出,二级菜单是封装在一级菜单中一个叫做children菜单中

要求:查询多有一级菜单和一级菜单所对应的二级菜单

sql语句:select  p.id,p.name.p.parent_id,p.level,p.created,p.updated,

c.id c_id,c.name c_name,c.parent_id c_parent_id,c.path c_path,

c.level c_level,c.created c_created,c.updated c_updated

from  rights p left join rights  c 

on c.parent_id = p.id

where p.parent_id = 0;

编辑:RightsController

@RestController
@CrossOrigin
@RequestMapping("/rights")
public class RightsController{
    @Autowired
    private RightsService rughtsService;
    //查询一级二级数据
    url:/rights/getRightsList
    参数无
    返回值:SysResult(List<Rights>)
    @GetMapping("/getRightsList")
    public SysResult getRightsList(){
        List<Rights> rights= rightsService.getRightsList();
        return SysResult.success(rights);
    }
}

编辑RightsService,业务层也就是最简单的语句

xml文件中书写,通过需求可知要将二级数据封装到集合children中

<select id = "getRightsList" resultMap="RightsRM">
    select p.id,p.name,p.parent_id,p.path,p.level,p.created,p.updated,
       c.id c_id,c.name c_name,c.parent_id c_parent_id,c.path c_path,
       c.level c_level,c.created c_created,c.updated c_updated
	    from
            rights p
	    left join
            rights c
	    on
	        c.parent_id = p.id
        where p.parent_id = 0
</select>

<resultMap id="rightsRM" autoMapping="true">
    <id property=id column="id">
    //一对一封装子级菜单list集合
    <collection property="children" ofType="Rights">
        <id property="id" column="c_id">
        <result column="c_name" property="name"/>
        <result column="c_parent_id" property="parentId"/>
        <result column="c_path" property="path"/>
        <result column="c_level" property="level"/>
        <result column="c_created" property="created"/>
        <result column="c_updated" property="updated"/>
    </collection>
</resultMap>

用户列表展现

页面JS分析

业务接口文档说明

请求路径:/user/list

请求类型:GET

请求参数:后台使用PageResult对象接收

请求案例:http://localhost:8091/list?query=查询关键字&pageNum=1&pageSize=10

参数名称参数说明备注信息
query用户查询的数据可以为null
pageNum分页查询的页数必须赋值不能为null
pageSize分页查询的条数

必须赋值不能为null

响应参数:SysResult对象,需要携带分页对象PageResult

参数名称参数说明备注信息
status状态信息200表示服务器请求成功,201表示服务器异常
msg服务其返回的提示信息可以为null
data服务器返回的业务数据返回值PageResult对象

pageResult对象介绍

参数名称参数类型参数说明备注信息
queryString用户查询的数据

可以为null

pageNumInteger查询页数不能为null
pageSizeInteger查询条数不能为null
totalLong查询总记录数不能为null
rowsObject分页查询的结果不能为null

返回值效果:

{"status":200,
  "msg":"服务器调用成功!",
  "data":
	{"query":"",
	"pageNum":1,
	"pageSize":2,
	"total":4,
	"rows":[
		{"created":"2021-02-18T11:17:23.000+00:00",
		 "updated":"2021-03-26T06:47:20.000+00:00",
		 "id":1,
		 "username":"admin",
		 "password":"a66abb5684c45962d887564f08346e8d",
		 "phone":"13111112222",
		 "email":"1235678@qq.com",
		 "status":true,
		 "role":null
		 },
		{"created":"2021-02-18T11:17:23.000+00:00",
		"updated":"2021-03-13T08:50:30.000+00:00",
		"id":2,
		"username":"admin123",
		"password":"a66abb5684c45962d887564f08346e8d",
		"phone":"13111112223",
		"email":"1235678@qq.com",
		"status":false,
		"role":null
		}
		]
	}
}

封装PageResult对象

@Data
@Accessors(chain=true)
@NoArgsConstructor
@AllArgsConstructor
public class pageResult{
    private String query;
    private Integer pageNum;
    private Integer pageSize;
    private Long total;
    private Object rows;
}

编辑UserController

业务说明
1./user/list
2.请求类型:Get
3.参数接受:后台使用pageResult对象接受
4.返回值:SysResult<PageResult>
@GetMapping("/list")
public Result<PageResult> getUserList(PageResult pageResult){//参数3个
    //业务查询总数,分页条数
    pageResult = userService.getUserList(pageResult);
    return SysResult.success(pageResult);//参数5个
}

编辑业务层UserService

要求查询 1页10条

特点:数组的结果 口诀:含头不含尾

语法: select * from user limit 起始位置,查询的条数

第一页:select * from user limit 0,10    实际查询条数是:0-9

第二页:select * from user limit 10,10  实际查询条数10-19

第三页:select * from user limit 20,10 实际查询条数20-29

第N页:select * from user limit (n-1)*10,10

代码如下:

@Override
public PageResult getUserList(PageResult pageResult){
    //记录总数total
    long total = userMapper.getTotal();
    //分页后的数据
    int size = pageResult.getPageSize;
    int start= (pageResult.getpageNum-1)*size
    List<User> rows = UserMapper.findUserListByPage(start,size);
    return pageResult.setTotal(total).setRows;
}

编辑UserMapper接口:

@Select("select * from user limit #{start},#{size}")
List<User> findUserListByPage(@Param("start") int start,@Param("size") int size);

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值