关于 MyBatis |
您所在的位置:网站首页 › mybatisplus查询count为0返回null › 关于 MyBatis |
开心一刻 记得上初中,中午午休的时候,我和哥们躲在厕所里吸烟 听见外面有人进来,哥们猛吸一口,就把烟甩了 进来的是教导主任,问:你们干嘛呢? 哥们鼻孔里一边冒着白烟一边说:我在生气 环境搭建 依赖引入MyBatis-Plus 版本: 3.1.0 Spring Boot 版本: 2.1.0.RELEASE 因为是基于 Spring Boot ,所以 MyBatis-Plus 的依赖如下 完整 pom.xml 如下 4.0.0 com.qsl mybatis-plus-demo 1.0-SNAPSHOT org.springframework.boot spring-boot-starter-parent 2.1.0.RELEASE org.springframework.boot spring-boot-starter-web com.baomidou mybatis-plus-boot-starter 3.1.0 mysql mysql-connector-java org.springframework.boot spring-boot-starter-test test org.projectlombok lombok 配置引入配置很简单,主要配置数据源和 SQL 打印, application.yml 如下 spring: application: name: mybatis-plus-demo datasource: driver-class-name: com.mysql.cj.jdbc.Driver url: jdbc:mysql://127.0.0.1:3306/my_project?useUnicode=true&useSSL=false&characterEncoding=utf8&serverTimezone=Asia/Shanghai username: root password: 123456 # SQL 打印,便于发现问题 mybatis-plus: configuration: log-impl: org.apache.ibatis.logging.stdout.StdOutImpl 表与初始数据DROP TABLE IF EXISTS `tbl_user`; CREATE TABLE `tbl_user` ( `id` int(11) NOT NULL AUTO_INCREMENT, `name` varchar(50) NOT NULL COMMENT '姓名', `age` tinyint(3) NOT NULL COMMENT '年龄', PRIMARY KEY (`id`) USING BTREE ) ENGINE = InnoDB; INSERT INTO `tbl_user` VALUES (1, '张三', 20); INSERT INTO `tbl_user` VALUES (2, '李四', 21); 环境验证Service 、 Mapper 就不写了,大家利用 mybatis-plus-generator (版本与 Mybatis-Plus 版本保持一致)生成下就好 嫌麻烦的也可以直接下载我的代码:mybatis-plus-demo 我们来跑个简单案例看看 MyBatis Plus 是否搭建成功了 可以看到,环境搭建是成功的 问题复现 分页插件既然是分页上的问题,自然要引入分页插件 用的就是 Mybatis Plus 的分页插件: PaginationInterceptor 分页查询也非常简单, Mybatis Plus 提供了专门的 api ,如下 使用如下 查询到数据的分页我们先来看如下案例 初始数据有 2 条,我们来看看此案例的 SQL 输出 一共两条 SQL 一条查询总数 一条查询分页记录 没毛病,稳如老狗 未查询到数据的分页前面的案例是能够查到数据,如果查不到数据了? 我们接着看另一个案例 初始的 2 条数据中没有 name = '吴用' 的记录,那么此时的 SQL 输出是怎么样的了? 同样输出两条 SQL 一条查询总数 一条查询记录 这有没有问题?大家想清楚再回答! 肯定是有问题的,1、查询记录为什么不带分页参数,2、总记录数都是 0 了,为什么还去查记录 2 个问题可以归为一个问题:总记录数都为 0 了,为什么还去查询记录? 源码分析我们代码都没写,问题肯定不是出在我们身上 (这锅甩的一点毛病没有!) 既然是分页,那问题肯定出在分页插件上了! PaginationInterceptor 实现了 Mybatis 的 Interceptor 接口 问题分析那么分页逻辑肯定在 PaginationInterceptor 的 intercept 方法内(关于原因,大家可以去看:spring-boot-2.0.3源码篇 - pageHelper分页,绝对有值得你看的地方 以及与它相关的文章) 我们来好好看看 intercept 方法 关键代码 问题就出在 既然 总记录条数 都 |
今日新闻 |
推荐新闻 |
CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3 |