首页 > 数据库 >文章列表(条件分页+动态sql)2021-4-1

文章列表(条件分页+动态sql)2021-4-1

时间:2024-04-01 23:14:11浏览次数:19  
标签:sql list 列表 pb state 2021 PageBean Integer categoryId

//controller
@GetMapping
    public Result<PageBean<Article>> list(
            Integer pageNum,
            Integer pageSize,
            @RequestParam(required = false) Integer categoryId,
            @RequestParam(required = false) String state
    ){

        PageBean<Article> pb = articleService.list(pageNum,pageSize,categoryId,state);
        return Result.success(pb);
    }


//service
//条件分页列表查询
    PageBean<Article> list(Integer pageNum, Integer pageSize, Integer categoryId, String state);


//serviceImpl
 @Override
    public PageBean<Article> list(Integer pageNum, Integer pageSize, Integer categoryId, String state) {
        //1.创建PageBean对象
        PageBean<Article> pb = new PageBean<>();
        //2.开启分页查询 PageHelper
        PageHelper.startPage(pageNum,pageSize);
        //3.调用mapper
        Map<String,Object> map = ThreadLocalUtil.get();
        Integer userId = (Integer)map.get("id");
        List<Article> as = articleMapper.list(userId,categoryId,state);
        //page中提供了方法。可以获取PageHelper分页查询后,得到记录的总条数和当前页数
        Page<Article> p = (Page<Article>) as;

        //把数据填充到PageBean对象中
        pb.setTotal(p.getTotal());
        pb.setItems(p.getResult());
        return pb;
    }

//mapper
List<Article> list(Integer userId, Integer categoryId, String state);

//!!!实体类
package com.di.bigevent.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 List<T> items;//当前页数据集合
}

在resources里,根据原mapper包的文件路径,创建mapper包,然后再创建ArticleMapper.xml

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper
        PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
        "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.di.bigevent.mapper.ArticleMapper">
    <!--动态sql-->
    <select id = "list" resultType="com.di.bigevent.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>
</mapper>
#要用到
<!--PageHelper坐标-->
        <dependency>
            <groupId>com.github.pagehelper</groupId>
            <artifactId>pagehelper-spring-boot-starter</artifactId>
            <version>1.4.6</version>
        </dependency>

标签:sql,list,列表,pb,state,2021,PageBean,Integer,categoryId
From: https://www.cnblogs.com/muzhaodi/p/18109603

相关文章

  • MySQL基础笔记-第九课
    DDL语句操作笔记在数据库管理中,DDL(DataDefinitionLanguage,数据定义语言)是用于定义和修改数据库结构的语言。本节课我们将深入了解DDL语句中关于表结构修改的几种常见操作,包括:添加字段、修改字段、删除字段和修改表名。添加字段向表中添加字段的操作使用ALTERTABLE语句......
  • MySQL提升笔记(4)InnoDB存储结构(1)
    innoDB存储引擎中,常见的页类型有:✅数据页(B-treeNode)✅undo页(undoLogPage)✅系统页(SystemPage)✅事务数据页(TransactionSystemPage)✅插入缓冲位图页(InsertBufferBitmap)✅插入缓冲空闲列表页(InsertBufferFreeList)✅未压缩的二进制大对象页(Uncompres......
  • 关于安装SQLyog时遇到的xiaowenti
    今天下sqlyog的时候发现连接有问题上网搜了一下,发现是MySQL的加密方式更新了,但是sqlyog的解密连接方式还没有更新所以会出现连接错误的情况而且发现还有不少人不知道如何解决这个问题这里提供一种解决的方法解决方法:1.直接cmd输入mysql-uroot-p登陆你的mysql数据库2.执行......
  • CTFHUB-技能树-Web前置技能-SQL注入-报错注入
    技能树-Web前置技能-SQL注入-报错注入报错注入函数loor函数selectcount(*),(floor(rand(0)*2))xfromtablegroupbyx;select查询语句groupby进行分组(相同为一组)rand()生成0到1的随机数floor()返回整数count()对数据整合(类似去重)产生原因:mysql在执行该语句会......
  • WEB专项-SQL注入
    一、EasySQL1.进入靶场,发现有用户名和密码两个输入框,首先想到的是便是爆破,但这工作量有点大,根据题目的提示,这里存在sql注入漏洞。2.在用户名和密码输入框中随便输入一点数据,找到传参位置。3.尝试在用户名中输入通用的sql注入语句,adminor1=1--qwe,发现没生效,有可能是没有闭......
  • JPA不识别MySQL的枚举类型
    1枚举好用吗?数据字典型字段,枚举比Integer好:限定值,只能赋值枚举的那几个实例,不能像Integer随便输,保存和查询的时候特别有用含义明确,使用时不需要去查数据字典显示值跟存储值直接映射,不需要手动转换,比如1在页面上显示为启用,0显示禁用,枚举定义好可以直接显示基于enum可以添加......
  • 深入学习MySQL1——体系结构、常见引擎、索引
    MySQL体系结构连接层:提供一些mysql的数据连接对象、用户校验、权限认证等服务服务层:在本层实现了一些核心功能,如SQL接口,缓存查询(8.0之后的版本已取消该功能)、SQL分析和优化,部分内置函数的执行。所有的跨存储引擎的功能都在这一层实现,如:过程、函数等。在该层,服务器会解析查询并......
  • MySQL日常练习——多表查询
    1、创建DDL——学生表——成绩表CREATETABLE`student`(`id`int(11)NOTNULLAUTO_INCREMENTCOMMENT'学号',`createDate`datetimeDEFAULTNULL,`userName`varchar(20)DEFAULTNULL,`pwd`varchar(36)DEFAULTNULL,`phone`varchar(11)DEFAULTNULL......
  • Mysql 常用SQL语句
    1、查看mysql中所有的数据库, show databases;2、创建库 createdatabase库名;(也可以用 create databaseifnotexists 库名; 表示如果库不存在再创建)例:create databaseifnotexists ecology;3、删除库 drop database 库名称4、创建一张......
  • 使用node更加方便的操作mysql数据库的小工具
    这是一个自己封装的小工具,能够更加方便的操作数据库地址:工具首页git仓库地址功能还在继续开发当中…安装npminstallmysqinfo已经引入mysql工具包,无需在项目中再次引入mysql工具包导入constdb=require('mysqinfo')获取数据库对象//db.dbconnect('m......