Spring Boot电商项目29:商品分类模块八:后台的【分类列表(平铺)】接口;(重点是,在Spring Boot项目中,使用PageHelper分页插件;)

说明:

(1)本篇博客需要注意的点:

          ● 使用PageHelper分页插件,来实现分页功能;即,重点就是在Spring Boot项目中,使用PageHelper分页插件;

          ● 然后,我们需要根据接口的要求,来决定后台怎么编写;

          ● 有关PageHelper插件,尤其是Page对象和PageInfo对象,可以参考【附加:PageHelper分页插件的:Page和PageInfo的区别;】;

目录

一:先看下接口文档和接口说明; 

(1)后台的【分类列表(平铺)】接口:对应的界面效果;

(2)后台的【分类列表(平铺)】接口:接口文档要求;

 二:分页技术,分析;

(1)以前接触过的分页查询; 

(2)根据接口要求,分页功能分析;

(3)本篇博客,重点是如何在Spring Boot项目中,使用PageHelper分页插件;

二:正式开发;

1.在CategoryController中,编写后台目录列表的方法:listCategoryForAdmin()方法;

2.在CategoryServiceImpl实现类中,编写分页查询的方法listForAdmin();然后在CategoryService接口中,反向生成方法的声明;

(1)在CategoryServiceImpl实现类中,编写分页查询的方法listForAdmin();

(2)然后在CategoryService接口中,反向生成方法的声明;

3.在CategoryMapper接口中,定义查询所有分类目录的方法selectList();然后在CategoryMapper.xml中编写方法的SQL;

(1)在CategoryMapper接口中,定义查询所有分类目录的方法selectList();

(2)在CategoryMapper.xml中编写方法的SQL;

4.启动项目,测试;


一:先看下接口文档和接口说明; 

(1)后台的【分类列表(平铺)】接口:对应的界面效果;

通过项目演示,可以看到,【分类列表(平铺)】接口,主要的任务就是完成分页的功能;

……………………………………………………

(2)后台的【分类列表(平铺)】接口:接口文档要求;

该接口的返回内容:

{    
	"status":  10000,
	    "msg":   "SUCCESS",
	    "data":  {        
		"total":  19,
		        "list":  [            
                    {                
							"id":  3,
			                "name":   "新鲜水果",
			                "type":  1,
			                "parentId":  0,
			                "orderNum":  1,
			                "createTime":   "2019-12-17T17:17:00.000+0000",
			                "updateTime":   "2019-12-28T09:11:26.000+0000"            
					},              
                    {                
							"id":  5,
			                "name":   "海鲜水产",
			                "type":  1,
			                "parentId":  0,
			                "orderNum":  2,
			                "createTime":   "2019-12-17T17:17:00.000+0000",
			                "updateTime":   "2019-12-28T08:25:20.000+0000"            
					},              
                    {                
							"id":  6,
			                "name":   "精选肉类",
			                "type":  1,
			                "parentId":  0,
			                "orderNum":  3,
			                "createTime":   "2019-12-17T17:17:00.000+0000",
			                "updateTime":   "2019-12-28T08:25:21.000+0000"            
					},              
                    {                
							"id":  9,
			                "name":   "冷饮冻食",
			                "type":  1,
			                "parentId":  0,
			                "orderNum":  4,
			                "createTime":   "2019-12-20T05:45:28.000+0000",
			                "updateTime":   "2019-12-28T08:25:22.000+0000"            
					},              
					{                
							"id":  10,
			                "name":   "蔬菜蛋品",
			                "type":  1,
			                "parentId":  0,
			                "orderNum":  5,
			                "createTime":   "2019-12-20T05:45:28.000+0000",
			                "updateTime":   "2019-12-28T08:25:23.000+0000"            
					},             
                    {                
							"id":  27,
			                "name":   "美味菌菇",
			                "type":  1,
			                "parentId":  0,
			                "orderNum":  7,
			                "createTime":   "2019-12-20T05:45:28.000+0000",
			                "updateTime":   "2020-02-10T15:20:36.000+0000"            
					},             
                    {                
							"id":  4,
			                "name":   "橘子橙子",
			                "type":  2,
			                "parentId":  3,
			                "orderNum":  1,
			                "createTime":   "2019-12-17T17:17:00.000+0000",
			                "updateTime":   "2019-12-28T08:25:10.000+0000"            
					},             
                    {                
							"id":  7,
			                "name":   "螃蟹",
			                "type":  2,
			                "parentId":  5,
			                "orderNum":  1,
			                "createTime":   "2019-12-17T17:17:00.000+0000",
			                "updateTime":   "2019-12-28T08:25:15.000+0000"            
					},              
                    {                
							"id":  17,
			                "name":   "冰淇淋",
			                "type":  2,
			                "parentId":  9,
			                "orderNum":  1,
			                "createTime":   "2019-12-17T17:17:00.000+0000",
			                "updateTime":   "2019-12-28T08:25:18.000+0000"            
					},             
                    {                
							"id":  16,
			                "name":   "牛羊肉",
			                "type":  2,
			                "parentId":  6,
			                "orderNum":  1,
			                "createTime":   "2019-12-17T17:17:00.000+0000",
			                "updateTime":   "2019-12-28T08:25:18.000+0000"            
					}        
                ],
		        "pageNum":  1,
		        "pageSize":  10,
		        "size":  10,
		        "startRow":  1,
		        "endRow":  10,
		        "pages":  2,
		        "prePage":  0,
		        "nextPage":  2,
		        "isFirstPage":  true,
		        "isLastPage":  false,
		        "hasPreviousPage":  false,
		        "hasNextPage":  true,
		        "navigatePages":  8,
		        "navigatepageNums":  [            1,             2        ],
		        "navigateFirstPage":  1,
		        "navigateLastPage":  2    
	}
}

通过接口返回内容,可以看到【分类列表(平铺)】接口,是无差别的查询imooc_mall_category表,同时加入了分页功能;而且,可以看到,其要求接口的返回内容中的data需要是一个PageInfo分页对象;


 二:分页技术,分析;

(1)以前接触过的分页查询; 

以前在介绍Mybatis和Mybatis-Plus的时候,介绍过分页查询;可以先去快速看看; 

(1)在Mybatis中:在介绍Mybatis的时候,【MyBatis进阶五:PageHelper分页插件;】介绍了一款可以用在Mybatis上的一款分页插件PageHelper(PS:这个插件不隶属于Mybatis,只是别人针对Mybatis开发的一款插件);

……………………………………………………

(2)我们在【SSM开发书评网7:项目准备与SSM整合五:Mybatis-Plus简介;SSM整合Mybatis-Plus;】中,介绍了在Spring MVC项目中,配置Mybatis-Plus,以及Mybatis-Plus的分页插件;

(3)在【SSM开发书评网12:图书列表分页及查询二:图书分页查询(1);(Dao和Service部分;使用技术是Mybatis-Plus分页查询;)】及后面几篇博客,介绍了Mybatis-Plus分页插件的具体应用; 

(2)根据接口要求,分页功能分析;

因为,接口文档中要求,返回中的data,需要是一个【PageInfo对象,序列化JSON】;所以,可以使用PageHelper分页插件(具体是使用PageHelper中的PageInfo对象),来完成这个需求;

……………………………………………………

有关,PageHelper中的Page对象和PageInfo对象的区别,可以参考【附加:PageHelper分页插件的:Page和PageInfo的区别;】;

(3)本篇博客,重点是如何在Spring Boot项目中,使用PageHelper分页插件;

本篇博客的分页,采用的就是PageHelper这个分页插件;只是,我们之前介绍PageHelper的时候,是在纯Mybatis项目中,使用的;而,本篇博客就是在Spring Boot项目中使用PageHelper分页插件;

这二者基本上是一样的,只是在引入依赖等处存在略微的差别;


二:正式开发;

1.在CategoryController中,编写后台目录列表的方法:listCategoryForAdmin()方法;

    /**
     * 后台的,分类目录列表
     * @param pageNum
     * @param pageSize
     * @return
     */
    @ApiOperation("后台分类目录列表")
    @GetMapping("/admin/category/list")
    @ResponseBody
    public ApiRestResponse listCategoryForAdmin(@RequestParam("pageNum") Integer pageNum,
                                                @RequestParam("pageSize") Integer pageSize) {
        PageInfo pageInfo = categoryService.listForAdmin(pageNum, pageSize);
        return ApiRestResponse.success(pageInfo);
    }

说明:

(1)url,请求方式,参数,要符合接口要求;

(2)因为这儿只有两个个参数,参数不多,所以没有使用JavaBean接受,而是直接用方法参数去接收了;

(3)因为,接口返回中,data数据,要求是PageInfo对象;所以,如果一切成功时,ApiRestResponse统一返回对象的data,我们设为PageInfo;

(4)service层的查询数据方法,在下一部分介绍;

2.在CategoryServiceImpl实现类中,编写分页查询的方法listForAdmin();然后在CategoryService接口中,反向生成方法的声明;

(1)在CategoryServiceImpl实现类中,编写分页查询的方法listForAdmin();

    /**
     * 查询所有的目录分类数据,并包装成PageInfo分页对象;
     * @param pageNum
     * @param pageSize
     * @return
     */
    @Override
    public PageInfo listForAdmin(Integer pageNum, Integer pageSize) {
        //设置分页的:当前页,每一页的记录数;
        // 然后,查询结果先按照type排序(从小到大排序);如果type相同,就按照order_num排序;
        PageHelper.startPage(pageNum, pageSize, "type,order_num");
        //调用Dao层的方法,去查询
        List<Category> categoryList = categoryMapper.selectList();
        //得到PageInfo对象
        PageInfo pageInfo = new PageInfo(categoryList);
        return pageInfo;
    }

说明:

(1)这儿使用到了PageHelper分页插件;主要使用到了其中的PageInfo对象;所以,为了使用PageHelper分页插件,我们需要在pom.xml中引入PageHelper分页插件的依赖;

        <!--pagehepler分页插件-->
        <dependency>
            <groupId>com.github.pagehelper</groupId>
            <artifactId>pagehelper-spring-boot-starter</artifactId>
            <version>1.2.13</version>
        </dependency>

(2)Dao层的selectList()方法,是查询所有目录分类数据;具体内容,在下一部分介绍;

……………………………………………………

(2)然后在CategoryService接口中,反向生成方法的声明;

3.在CategoryMapper接口中,定义查询所有分类目录的方法selectList();然后在CategoryMapper.xml中编写方法的SQL;

(1)在CategoryMapper接口中,定义查询所有分类目录的方法selectList();

……………………………………………………

(2)在CategoryMapper.xml中编写方法的SQL;

  <select id="selectList"  resultMap="BaseResultMap">
    select
    <include refid="Base_Column_List"></include>
    from imooc_mall_category
  </select>

说明:

(1)这个SQL很简单,就是查询所有分类目录数据;

4.启动项目,测试;

PS:后台的【分类列表(平铺)】接口需要是管理员用户登录,才能操作;

为了方便观察,把调用接口返回的data数据,复制出来,通过一个json.cn这个接口格式化在线工具,看一下;

其实,我们接口返回这些数据后,交给前端就行了;前端会根据这些数据,组织显示;

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值