网站icp备案查询,合肥seo推广排名,wordpress官网上的主题收费吗,江阴早晨网站建设引言#xff1a; 该类博客的学习是基于b站黑马视频springbootvue视频学习#xff01;具体围绕项目——大事件进行实战学习。 目录 一、功能介绍#xff08;需求#xff09;。 1、文章列表功能基本介绍。 2、条件分页查询功能与注意。 3、前端页面效果。#x… 引言 该类博客的学习是基于b站黑马视频springbootvue视频学习具体围绕项目——大事件进行实战学习。 目录 一、功能介绍需求。 1、文章列表功能基本介绍。 2、条件分页查询功能与注意。 3、前端页面效果。后面实现 二、接口文档。 1请求路径、请求方式、接口描述。 2请求参数。 3queryString请求参数格式。 4响应数据。 三、实现思路分析。 1自定义类。封装分页查询的结果 2controller层。 3Service层。 4Mapper层。 四、具体代码书写。 1PageBean类。 2ArticleController。 3ArticleService接口。 4ArticleServiceImpl实现类。 1、mybatis的PageHelper开启分页查询。 2、service层实现类具体代码。重要 5Mapper层。 1、使用mapper映射配置文件。书写动态SQL语句。 2、基本的框架搭建。 3、书写SQL语句。 4、mapper层接口。 5、mapper映射配置文件。 五、后端接口测试。postman 1数据库添加并存在4条文章数据。 2测试条件1。 3测试条件2。 4测试条件3。 5测试条件4。 一、功能介绍需求。 1、文章列表功能基本介绍。 文章列表查询功能是用户点击左侧菜单栏的文章管理后。需要在当前页面的主区域展示当前用户所创建的文章信息。并且信息是以列表的形式展示。 2、条件分页查询功能与注意。 列表的上方有输入框。用户可以根据文章的分类或者文章的发布状态去查询文章。列表的底部有分页条。展示了文章的总记录数有分页条。用户可以选择每一页所展示的文章条数以及要查询的页码等等。 注意当用户点击了搜索、上一页、下一页、显示每页条数等等都需要访问后台的接口查询满足当前条件的数据最终在列表中进行显示文字信息。 3、前端页面效果。后面实现 二、接口文档。 1请求路径、请求方式、接口描述。 路径article。请求方式get请求。 2请求参数。 分页参数pageNum(当前页码)、pageSize(每页条数)这两个参数是必须要传递的。搜索条件categoryId(文章分类id)、state非必须传递。因为搜索的条件用户可以使用也可以不使用。 3queryString请求参数格式。 键值对查询字符串由一系列键值对组成每对键值之间用等号连接。例如keyvalue。 参数分隔不同的键值对之间用和号分隔。例如key1value1key2value2。 可选性查询字符串是可选的不是所有的URL都需要包含查询字符串。 位置查询字符串通常位于URL的路径部分之后以问号?开始。 这里的请求参数示例如下pageNum1pageSize3categoryId2state草稿 4响应数据。 格式JSON格式。 data对应的类型是object。其中里面有两个内容。 total对应的是总条数。items对应的是当前页的数据集合。其中它是一个数组。数组里面有多个对象。且每一个对象都是一个文章详情。 三、实现思路分析。 1自定义类。封装分页查询的结果 通常。实现分页查询的时候会提供一个自定义类用于封装查询后的结果。里面至少包括两个属性tota总条数、items(List?..所需数据类..?)。到时候后台操作完将查询后的数据封装到这个类的对象中再返回回去即可。 2controller层。 list()方法。 方法参数pageNum、pageSize分别是当前页码与每页条数。 而categoryId与state是非必须传递参数。使用注解RequestParam(requiredfalse)告诉MVC框架该参数不是必须的否则前端没有这两个参数就不允许访问该接口。 3Service层。 首先在Service层需要定义一个前面创建的类的对象用来封装查询回的数据。这里再开启分页查询——借助于mybatis提供的PageHelper即可然后再调用mapper层方法完成查询。 4Mapper层。 因为这里的某些参数不一定会传值。所以不能把SQL语句写死使用MYBATIS的动态SQL才行。所以要去创建mapper映射配置文件.xml会比较方便 四、具体代码书写。 1PageBean类。 封装查询后的数据的实体类。 package com.feisi.pojo;import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;import java.util.List;//分页返回结果对象
Data
NoArgsConstructor
AllArgsConstructor
public class PageBean T{private Long total;//总条数private ListT items;//当前页数据集合
}2ArticleController。 /*** 获取文章列表条件分页列表查询* param pageNum* param pageSize* param categoryId* param state* return*/GetMappingpublic ResultPageBeanArticle list(Integer pageNum,Integer pageSize,RequestParam(required false) Integer categoryId,RequestParam(required false) String state){//调用service层PageBeanArticle pageBean articleService.list(pageNum, pageSize, categoryId, state);return Result.success(pageBean);} 3ArticleService接口。 /*** 条件分页列表查询* param pageNum* param pageSize* param categoryId* param state* return*/PageBeanArticle list(Integer pageNum, Integer pageSize, Integer categoryId, String state); 4ArticleServiceImpl实现类。 1、mybatis的PageHelper开启分页查询。 导入对应的坐标。回到pom.xml文件。记得刷新Maven。 !--PageHelper--dependencygroupIdcom.github.pagehelper/groupIdartifactIdpagehelper-spring-boot-starter/artifactIdversion1.4.6/version/dependency 使用指定方法PageHelper.startPage(pageNum,pageSize)。 pageNum当前页码从1开始。pageSize每页显示的记录数。调用这个方法后PageHelper 会将分页参数保存到 ThreadLocal 中之后执行的第一个 MyBatis 查询将会应用这些分页参数。所以需要在任何 MyBatis 查询方法调用之前调用 startPage()方法。PageHelper 会自动处理 SQL 的分页逻辑不需要再手动编写分页的 SQL 语句。 2、service层实现类具体代码。重要 调用mapper层的list()方法进行查询时。就不需要传递pageNum、pageSize两个参数。PageHelper的startPage(pageNumpageSize)方法会自动在执行sql的语句后添加limit进行分页查询。 注意还需要传递参数当前已登录用户的id。因为用户只能操作自己的userId从ThreadLocal当中获取再通过三个参数的值传回去。用一个List?集合接收查询的结果。 注意因为Page对象中提供了方法。可以获取PageHelper分页查询后得到的总记录条数和当前页数据。分页查询最终返回的就是一个Page对象。所以需要将List?集合强转成Page对象。Page对象是List的一个实现类。属于向下转型(Page)List??.... 再通过把两个响应数据total、items设置好通过page对象.getTotal()、page对象.getResult()。再把对应响应给前端回去。 Overridepublic PageBeanArticle list(Integer pageNum, Integer pageSize, Integer categoryId, String state) {//1.创建PageBean对象PageBeanArticle pageBean new PageBean();//2.开启分页查询PageHelper//mybatis插件PageHelper.startPage(pageNum,pageSize);//3.调用mapper层方法MapString, Object map ThreadLocalUtil.get();Integer userId (Integer) map.get(id);//返回的是一个List集合。查询的结果。ListArticle items articleMapper.list(userId,categoryId,state);//Page对象中提供了方法。可以获取PageHelper分页查询后得到的总记录条数和当前页数据PageArticle p (PageArticle) items;//4.设置PageBean对象属性pageBean.setTotal(p.getTotal());pageBean.setItems(p.getResult()); //当前页数据的集合return pageBean; //返回PageBean对象。对象中封装了分页查询后的结果。总记录数、当前页数据} 5Mapper层。 1、使用mapper映射配置文件。书写动态SQL语句。 如果使用注解Select(....)就会很麻烦。因为参数不一定使用注解写动态sql很麻烦 所以在resources目录下新建与mapper层相同层级的配置文件。 新建mapper映射配置文件。 注意每个包是/斜杠分隔。 2、基本的框架搭建。 提供映射配置文件。直接使用模板可以网上查 映射配置文件必须要和mapper层接口所在同一个目录下同时映射配置文件名必须与mapper层接口名一致 注意属性namespace的值必须是对应mapper层接口的全类名 3、书写SQL语句。 注意因为参数条件不定所以条件查询参数使用where标签。当然如果没有条件就不用去加where标签。 判断条件if标签。if标签有一个属性test。作用就是判断该参数是否为空不为空就去根据当前参数条件去查询。因为categoryId文章分类、state文章状态参数不一定会传过来所以要非空校验。 注意test里面的参数名要与mapper层接口方法list()对应的参数一致 4、mapper层接口。 ListArticle list(Integer userId, Integer categoryId, String state); 5、mapper映射配置文件。 ?xml version1.0 encodingUTF-8 ?
!DOCTYPE mapperPUBLIC -//mybatis.org//DTD Mapper 3.0//ENhttp://mybatis.org/dtd/mybatis-3-mapper.dtd
mapper namespacecom.feisi.mapper.ArticleMapper!--动态sql--!--id方法名list--!--resultType多条数据对应的实体类类型Article类对象--!--userId不要校验因为没有登录就不能进行这些查询操作--select idlist resultTypecom.feisi.pojo.Articleselect * from articlewhereif testcategoryId ! nullcategory_id#{categoryId}/ifif teststate ! nulland state#{state}/ifand create_user#{userId}/where/select
/mapper 五、后端接口测试。postman 1数据库添加并存在4条文章数据。 使用添加文章接口。 使用添加文章接口。 数据库表数据。 2测试条件1。 文章类型与状态不传值。pageSize3每页条数为3。pageNum1第一页。 3测试条件2。 文章类型与状态不传值。pageSize3每页条数为3。pageNum2第二页。 4测试条件3。 5测试条件4。
文章转载自: http://www.morning.kmkpm.cn.gov.cn.kmkpm.cn http://www.morning.nxfuke.com.gov.cn.nxfuke.com http://www.morning.trrpb.cn.gov.cn.trrpb.cn http://www.morning.nflpk.cn.gov.cn.nflpk.cn http://www.morning.xdjwh.cn.gov.cn.xdjwh.cn http://www.morning.ygwbg.cn.gov.cn.ygwbg.cn http://www.morning.tsdqr.cn.gov.cn.tsdqr.cn http://www.morning.hhpkb.cn.gov.cn.hhpkb.cn http://www.morning.mgkcz.cn.gov.cn.mgkcz.cn http://www.morning.dtcsp.cn.gov.cn.dtcsp.cn http://www.morning.hprmg.cn.gov.cn.hprmg.cn http://www.morning.crqpl.cn.gov.cn.crqpl.cn http://www.morning.pmtky.cn.gov.cn.pmtky.cn http://www.morning.nzsx.cn.gov.cn.nzsx.cn http://www.morning.hpkgm.cn.gov.cn.hpkgm.cn http://www.morning.ryglh.cn.gov.cn.ryglh.cn http://www.morning.xnymt.cn.gov.cn.xnymt.cn http://www.morning.rjyd.cn.gov.cn.rjyd.cn http://www.morning.nxrgl.cn.gov.cn.nxrgl.cn http://www.morning.dighk.com.gov.cn.dighk.com http://www.morning.jcbmm.cn.gov.cn.jcbmm.cn http://www.morning.cndxl.cn.gov.cn.cndxl.cn http://www.morning.glnfn.cn.gov.cn.glnfn.cn http://www.morning.tdcql.cn.gov.cn.tdcql.cn http://www.morning.hcsqznn.cn.gov.cn.hcsqznn.cn http://www.morning.mzcrs.cn.gov.cn.mzcrs.cn http://www.morning.lclpj.cn.gov.cn.lclpj.cn http://www.morning.clybn.cn.gov.cn.clybn.cn http://www.morning.xcnwf.cn.gov.cn.xcnwf.cn http://www.morning.ytrbq.cn.gov.cn.ytrbq.cn http://www.morning.fbmjw.cn.gov.cn.fbmjw.cn http://www.morning.mnclk.cn.gov.cn.mnclk.cn http://www.morning.ttkns.cn.gov.cn.ttkns.cn http://www.morning.bbrf.cn.gov.cn.bbrf.cn http://www.morning.mzhh.cn.gov.cn.mzhh.cn http://www.morning.gtmdq.cn.gov.cn.gtmdq.cn http://www.morning.xbzfz.cn.gov.cn.xbzfz.cn http://www.morning.beiyishengxin.cn.gov.cn.beiyishengxin.cn http://www.morning.rmrcc.cn.gov.cn.rmrcc.cn http://www.morning.ghyfm.cn.gov.cn.ghyfm.cn http://www.morning.fhntj.cn.gov.cn.fhntj.cn http://www.morning.tpnx.cn.gov.cn.tpnx.cn http://www.morning.sfcfy.cn.gov.cn.sfcfy.cn http://www.morning.lmyq.cn.gov.cn.lmyq.cn http://www.morning.tsrg.cn.gov.cn.tsrg.cn http://www.morning.rkgyx.cn.gov.cn.rkgyx.cn http://www.morning.ie-comm.com.gov.cn.ie-comm.com http://www.morning.htbgz.cn.gov.cn.htbgz.cn http://www.morning.mxbks.cn.gov.cn.mxbks.cn http://www.morning.rxwnc.cn.gov.cn.rxwnc.cn http://www.morning.hngmg.cn.gov.cn.hngmg.cn http://www.morning.lgxzj.cn.gov.cn.lgxzj.cn http://www.morning.yxyyp.cn.gov.cn.yxyyp.cn http://www.morning.qkpzq.cn.gov.cn.qkpzq.cn http://www.morning.rytps.cn.gov.cn.rytps.cn http://www.morning.wcrcy.cn.gov.cn.wcrcy.cn http://www.morning.nyqb.cn.gov.cn.nyqb.cn http://www.morning.pttrs.cn.gov.cn.pttrs.cn http://www.morning.tdmr.cn.gov.cn.tdmr.cn http://www.morning.lzrpy.cn.gov.cn.lzrpy.cn http://www.morning.lktjj.cn.gov.cn.lktjj.cn http://www.morning.pmghz.cn.gov.cn.pmghz.cn http://www.morning.hhkzl.cn.gov.cn.hhkzl.cn http://www.morning.zsyrk.cn.gov.cn.zsyrk.cn http://www.morning.lkbkd.cn.gov.cn.lkbkd.cn http://www.morning.wmdqc.com.gov.cn.wmdqc.com http://www.morning.zrdqz.cn.gov.cn.zrdqz.cn http://www.morning.rcjqgy.com.gov.cn.rcjqgy.com http://www.morning.nzmw.cn.gov.cn.nzmw.cn http://www.morning.gpcy.cn.gov.cn.gpcy.cn http://www.morning.gdgylp.com.gov.cn.gdgylp.com http://www.morning.ptqpd.cn.gov.cn.ptqpd.cn http://www.morning.jjhrj.cn.gov.cn.jjhrj.cn http://www.morning.mooncore.cn.gov.cn.mooncore.cn http://www.morning.gmwqd.cn.gov.cn.gmwqd.cn http://www.morning.qsfys.cn.gov.cn.qsfys.cn http://www.morning.xmnlc.cn.gov.cn.xmnlc.cn http://www.morning.mcpdn.cn.gov.cn.mcpdn.cn http://www.morning.mzwqt.cn.gov.cn.mzwqt.cn http://www.morning.txhls.cn.gov.cn.txhls.cn