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

3.3.2

该问题是如何引起的?(确定最新版也有问题再提!!!)

由于执行分页查询时参数不是一个固定的实体,也不是固定的SQL,所以自己写了一个 DynamicSelectPage extends AbstractMethod 来实现。 参照PaginationInterceptor 写了一个 @Accessors(chain = true) @Intercepts({@Signature(type = StatementHandler.class, method = "prepare", args = {Connection.class, Integer.class})}) public class DynamicPaginationHandler extends AbstractSqlParserHandler implements Interceptor 在这个类中给动态给参数赋值, Mapper中定义了 <E extends IPage<?>> E dynamicSelectPage(IDynamicPage page, BaseMetadata baseMetadata) ; 请注意:这里的参数为我自己写的page对象,返回的是MP的Page对象(为什么是MP的Page对象是因为MybatisMapperMethod中固定判断了) MyBatis-Plus 自定义动态SQL分页问题

查询出结果后在自己写的 public class DynamicResultHandler implements Interceptor 中转成PageList MyBatis-Plus 自定义动态SQL分页问题

但是返回到MybatisMapperMethod中时, MyBatis-Plus 自定义动态SQL分页问题 MP直接用的参数的IPage对象判断,因为page参数对象为空,导致为空指针异常! 我觉得是不是可以做个判断,如果为空应该重新创建一个page对象?

或者还有其他解决方案?

Comment From: miemieYaho

不会重新创建,ipage只是一个接口

Comment From: 156640677

传入的Page对象不一定是返回的Page对象,是不是可以考虑重新创建一下?像我这种场景有没有什么好的建议?

不会重新创建,ipage只是一个接口

Comment From: 156640677

或者这里 MyBatis-Plus 自定义动态SQL分页问题 可以自己给SQL中的参数赋值。 如果接目前的逻辑是参数中有IPage就走了MP里的分页插件方法,我没法给动态SQL赋值。

Comment From: miemieYaho

你就自己写个分页插件吧,method定义的返回值可以是list, MybatisMapperMethod只是在返回值是ipage时进行ipage.setRecords操作