文章目录
前言
这种场景非常常见,就是当前的查询语句是我们自定义的,想要在自己写的sql语句中通过分页插件来实现分页功能👑(比如说我需要在教师表中查询name不为空的⽤户,并且职称为讲师,年龄小于40的教师对象并将查询结果分页等等…)
还没有看过上一篇的朋友,这里是传送门:玩转MyBatis-Plus分页插件一:基本使用
如果对MybatisPlus分页插件基本使用已经非常熟练的朋友就接着往下看吧
开整
玩自定义分页必须掌握的神器就是:条件构造器wrapper、Lambda条件构造器如果还没有学会的朋友可以去官网先学习一波
前面说到,分页它的本质就是内部封装了一个拦截器,对于满足满足条件的数据,起到一个过滤的作用🙋♀️这会和我们后续的自定义条件有关,毕竟也是同样的道理,你自定义一个条件来“筛选数据”,只展示满足条件的数据
上一篇博文我们在mapper的selectPage函数当中将wrapper设为null,则是查询全部数据。
自定义分页的核心就是:参照selectPage函数
自定义分页的重点就是:自定义函数的返回值必须为Page对象,你所定义的函数的第一个参数类型必须为Page
简单案例[体验一波]
目标数据表t_product
SET NAMES utf8mb4;
SET FOREIGN_KEY_CHECKS = 0;
-- ----------------------------
-- Table structure for t_product
-- ----------------------------
DROP TABLE IF EXISTS `t_product`;
CREATE TABLE `t_product` (
`id` int(0) NULL DEFAULT NULL,
`name` varchar(300) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL,
`price` decimal(10, 0) NULL DEFAULT NULL,
`stock` int(0) NULL DEFAULT NULL,
`proPic` varchar(765) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL,
`isHot` bit(1) NULL DEFAULT NULL,
`isSwiper` bit(1) NULL DEFAULT NULL,
`swiperPic` varchar(765) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '轮转图片的地址',
`swiperSort` int(0) NULL DEFAULT NULL COMMENT '排序',
`typeId` int(0) NULL DEFAULT NULL COMMENT '类别id',
`hotDateTime` datetime(0) NULL DEFAULT NULL COMMENT '设置热卖的时间',
`productIntroImgs` varchar(600) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL,
`productParaImgs` varchar(600) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL,
`description` varchar(600) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '商品描述'
) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_general_ci ROW_FORMAT = Dynamic;
-- ----------------------------
-- Records of t_product
-- ----------------------------
INSERT INTO `t_product` VALUES (1, '小米电视大师 82英寸', 10999, 3451, '21.png', b'0', b'1', '2.jpg', 3, 14, '2022-04-26 21:36:34', '\"\"', '\"\"', '\"\"');
INSERT INTO `t_product` VALUES (4, 'Xiaomi 11', 3799, 3232, '6.png', b'1', b'0', 'default.jpg', 0, 2, '2022-05-31 21:36:34', '<img width=\'100%\' src=\'http://localhost:8001/image/productIntroImgs/11.jpg\'></img>', '<img width=\'100%\' src=\'http://localhost:8001/image/productParaImgs/11.jpg\'></img>', '「全版本领券立减200元,券后价3299元起;享至高24期免息;赠手机保护壳*1;【全款支付套装】赠果冻包」');
INSERT INTO `t_product` VALUES (5, 'Redmi K40 游戏增强版', 2299, 2005, '11.png', b'0', b'1', '1.jpg', 1, 39, NULL, '\"\"', '\"\"', '\"\"');
INSERT INTO `t_product` VALUES (6, 'Xiaomi 11 Pro',