mybatis plus 查询数量_分页查询统计数据总数异常

在使用MyBatis Plus版本2.1.9进行查询时遇到统计数据总数错误,问题源于PaginationInterceptor的queryTotal方法。当执行分页查询时,统计数量的SQL返回了用户表的总数而非预期的活动数量。错误可能由于JOIN操作导致。解决方法包括检查JOIN条件和升级到最新MyBatis Plus版本。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

查询xml 文件

`

SELECT a.*, p.*, u.*, i.*

FROM d_initiatin_activities AS a

LEFT JOIN d_images AS i ON a.id_ = i.deal_id

LEFT JOIN d_participants_activities AS p ON a.id_ = p.activity_id

LEFT JOIN sys_user_t AS u ON p.user_id = u.id_

a.status_ = 0

AND a.organizer_user =#{userId}

AND a.visible =#{visible}

order by a.set_time DESC

ofType="com.albedo.java.modules.app.domain.ParticipantsActivities"

resultMap="participantMap">

ofType="com.albedo.java.modules.app.domain.Images"

resultMap="ImagesMap">

`

当前使用版本(必须填写清楚,否则不予处理)

mybatis-plus-core/2.1.9/

该问题是怎么引起的?(请使用最新版(具体版本查看CHANGELOG.md),如还有该问题再提 issue!)

/com/baomidou/mybatis-plus-core/2.1.9/mybatis-plus-core-2.1.9-sources.jar!/com/baomidou/mybatisplus/plugins/PaginationInterceptor.java

DEBUG查看到

protected void queryTotal(boolean overflowCurrent, String sql, MappedStatement mappedStatement, BoundSql boundSql, Pagination page, Connection connection) { try (PreparedStatement statement = connection.prepareStatement(sql)) { DefaultParameterHandler parameterHandler = new MybatisDefaultParameterHandler(mappedStatement, boundSql.getParameterObject(), boundSql); parameterHandler.setParameters(statement); int total = 0; try (ResultSet resultSet = statement.executeQuery()) { if (resultSet.next()) { total = resultSet.getInt(1); } } page.setTotal(total); /* * 溢出总页数,设置第一页 */ int pages = page.getPages(); if (overflowCurrent && (page.getCurrent() > pages)) { // 设置为第一条 page.setCurrent(1); } } catch (Exception e) { logger.error("Error: Method queryTotal execution error !", e); } }

sql为

SELECT COUNT(1)

FROM d_initiatin_activities AS a

LEFT JOIN d_images AS i ON a.id_ = i.deal_id

LEFT JOIN d_participants_activities AS p ON a.id_ = p.activity_id

LEFT JOIN sys_user_t AS u ON p.user_id = u.id_ WHERE a.status_ = 0

重现步骤

统计成了 用户表的总数

报错信息

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值