在使用 MPJLambdaWrapper 进行分页查询时,如果不为左连接表指定别名,可能会导致生成的 countSql 不准确的问题。
当进行分页查询时,MPJLambdaWrapper 会生成两个 SQL 语句:一个是用于查询符合条件的数据列表的 selectSql,另一个是用于查询总记录数的 countSql。countSql 的目的是为了获取总记录数以便进行分页计算。
如果不为左连接表指定别名,生成的 countSql 中可能会出现重复的表名,从而导致统计的记录数不准确。
为了避免这个问题,建议在进行左连接操作时,为每个左连接表指定一个别名(alias)。通过指定别名,可以确保生成的 countSql 正确地计算总记录数。
以下是一个示例,展示了如何为左连接表指定别名:
当进行分页查询时,MPJLambdaWrapper 会生成两个 SQL 语句:一个是用于查询符合条件的数据列表的 selectSql,另一个是用于查询总记录数的 countSql。countSql 的目的是为了获取总记录数以便进行分页计算。
如果不为左连接表指定别名,生成的 countSql 中可能会出现重复的表名,从而导致统计的记录数不准确。
为了避免这个问题,建议在进行左连接操作时,为每个左连接表指定一个别名(alias)。通过指定别名,可以确保生成的 countSql 正确地计算总记录数。
以下是一个示例,展示了如何为左连接表指定别名:
MPJLambdaWrapper wrapper = new MPJLambdaWrapper() .select(…) .from(BfmPmcOnlineProduct.class) .leftJoin(BfmPmcProductRecord.class, “pr”, on -> on.eq(BfmPmcProductRecord::getId, BfmPmcOnlineProduct::getProductRecordId)) .leftJoin(BfmPmcDispatchOrder.class, “do”, on -> on.eq(BfmPmcDispatchOrder::getId, BfmPmcOnlineProduct::getDispatchOrderId)) .eq(…) .listPage(pageNo, pageSize);
在上述示例中,我们在 leftJoin 方法中为左连接的表指定了别名 “pr” 和 “do”。这样可以确保生成的 countSql 正确计算总记录数。
请根据你的具体业务需求,在进行左连接时为每个左连接表指定别名,以确保生成的 countSql 准确无误。