首页 > 其他分享 >sprinboot实现分页查询

sprinboot实现分页查询

时间:2024-02-01 15:11:25浏览次数:25  
标签:分页 sprinboot 查询 pb state PageBean id Integer categoryId

1.环境介绍:

springboot2.7.4

pagehelper1.4.6

mybatis-plus3.5.1

2.需求分析

  通过前端传回的分页要求的参数<页码,页数据量>,返回结果

  实现

{
    "code": 0,
    "message": "操作成功",
    "data": {
        "total": 5,
        "items": [
            {
                "id": 1,
                "title": "背景2",
                "content": "测试,测试2,测试3,测试4......",
                "coverImg": "https://www.bing.com",
                "state": "已发布",
                "categoryId": 2,
                "createUser": 3,
                "createTime": "2024-02-01T14:43:27",
                "updateTime": "2024-02-01T14:43:27"
            },
            {
                。。。}

3.具体实现步骤

  1. 构建controller类,接受参数
    public Result<PageBean<Article>> list(
                Integer pageNum,Integer pageSize,
                @RequestParam(required = false) Integer categoryId,
                @RequestParam(required = false) String state
        )

    可通过@RequestParam指定该参数是否必须

  2. impl中实现
    @Override
        public PageBean<Article> list(Integer pageNum, Integer pageSize, Integer categoryId, String state) {
            PageBean<Article> pb = new PageBean<>();//PageBean包含一个total,和一个泛型List
            PageHelper.startPage(pageNum,pageSize);//使用PageHelper实现分页
            Map<String,Object> map = ThreadLocalUtil.get();
            Integer userId = (Integer) map.get("id");//查询用户创建的文章时,从threadLocal中读取用户id
            List<Article> as = articleMapper.list(userId,categoryId,state);
            Page<Article> p = (Page<Article>)as;//将List强制转换为Page子类,以调用Page子类中方法
            pb.setTotal(p.getTotal());
            pb.setItems(p.getResult());
            return pb;
        }
  3. mapper.xml实现
    <select id="list" resultType="com.example.springdemo.pojo.Article">
            select * from article
            <where>
                <if test="categoryId!=null">
                    category_id=#{categoryId}
                </if>
                <if test="state!=null">
                    and state=#{state}
                </if>
                and create_user=#{userId}
            </where>
        </select>

     

存在问题:idea在xml中没有代码提示实体类的全路径,影响编码体验

标签:分页,sprinboot,查询,pb,state,PageBean,id,Integer,categoryId
From: https://www.cnblogs.com/jiajianchengchu/p/18001303

相关文章

  • tp 框架进行数据查询
    模型层方面设置表名主见名称字段protected$name='recruit';protected$pk='recruit_id';protected$field=[];//查找详情数据publicstaticfunctiongetUserOrderDetail($order_id,$user_id){$order=$this->where(['......
  • spring boot分页
    0verridepublicPair<List<ApplyDto>,Long>selectDbApplyList(ApplyDtoapplyDto){Longid=applyDto.getId();//办事顺信DbSupervisiondbSupervision=abSupervisionMapper.selectDbSupervisionByDbId(id);if(dbSupervision==null){thrownewRuntimeExcep......
  • 面试官:Mysql千万级大表如何进行深度分页优化?
    背景假如有一张千万级的订单表,这张表没有采用分区分表,也没有使用ES等技术,分页查询进行到一定深度分页之后(比如1000万行后)查询比较缓慢,我们该如何进行优化?数据准备订单表结构如下:CREATETABLE`t_order`(`id`BIGINT(20)UNSIGNEDNOTNULLAUTO_INCREMENTCOMMENT......
  • Linux下查询CPU,内存,磁盘及操作系统
    查询CPU核数nproc结果为4查询内存free-h#以人类(human)可读的方式展示结果为totalusedfreesharedbuff/cacheavailableMem:15Gi2.2Gi327Mi1.0Mi13Gi13GiSwap:......
  • JdbcTemplate.queryForList()查询结果如何对Date等日期类型进行格式化?
    1.情景展示在实际开发中,我们往往会遇到这样的需求:需要对多个数据库进行操作,这用mybatis等框架来进行操作显然不合理,也无法满足多样化的需求。通过java来进行JDBC操作无疑是最好的选择。如下图所示,通过org.springframework.jdbc.core.JdbcTemplate.queryForList()方法查询到......
  • MySQL大表分页查询的坑以及解决方案
    最近在做一个需求,需求内容中有一个功能点是查询指定用户标签里的用户id,这里做了分页查询,分页查询是用mysql的LIMIT设置offset和size值来实现的。在程序执行过程中会发现,如果查询的用户标签数据量很大时会出现慢查询告警,这里已经对mysql表的标签名称和用户id字段都加了索引,并且limi......
  • 微信小程序连表查询lookup
    已知有两个集合media和users,集合中的字段(users中的)_openid和(media中的)openid值相同 小程序页面js中调用云函数getMediawx.cloud.callFunction({name:'getMedia',data:{sort}}).then(res=>{if(res.result){this.setData({......
  • Langchain中改进RAG能力的3种常用的扩展查询方法
    有多种方法可以提高检索增强生成(RAG)的能力,其中一种方法称为查询扩展。我们这里主要介绍在Langchain中常用的3种方法查询扩展技术涉及对用户的原始查询进行细化,以生成更全面和信息丰富的搜索。使用扩展后的查询将从向量数据库中获取更多相关文档。1、StepBackPromptingTake......
  • elasticsearch 查询:聚合查询
    新建索引:POST/index/_search{"aggs":"名字":{"agg_type":{"属性":"值"}}} 1.去重计数查询去重计数,即Cardinality先将返回的文档中的field进行去重,......
  • elasticsearch 查询:经纬度查询
    geo_distance:直线距离检索方式geo_bounding_bos:以两个点确定一个矩形,获取在矩形内的全部数据geo_polygon:以多个点,确定一个多边形,获取多边形内的全部数据#测试geo--geo_distancePOST/king_test_map/_search{"query":{"geo_distance":{"location":{......