左侧菜单展现
搭建层级代码
表设计说明
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对象介绍
参数名称 | 参数类型 | 参数说明 | 备注信息 |
query | String | 用户查询的数据 | 可以为null |
pageNum | Integer | 查询页数 | 不能为null |
pageSize | Integer | 查询条数 | 不能为null |
total | Long | 查询总记录数 | 不能为null |
rows | Object | 分页查询的结果 | 不能为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);