问题描述
1、编译过程是不会被发现的;
2、运行时报错:Caused by: org.apache.ibatis.reflection.ReflectionException: Error parsing property name 'lambda$pages$4d14352e$1'. Didn't start with 'is', 'get' or 'set'。
问题分析
MyBatis-Plus的条件构造器常用方法不支持lambda表达式传参,如果使用lambda表达式传参将会导致反射失败。
Page<JeiEntity> jeiPage = wrapper.like(x->x.getName(), jeiQuery.getName()) .between(StringUtils.isNotBlank(jeiQuery.getBeginTime()) && StringUtils.isNotBlank(jeiQuery.getEndTime()), x->x.getUpdated(), jeiQuery.getBeginTime(), jeiQuery.getEndTime()) // .orderByDesc(BaseEntity::getId, JeiEntity::getName) .page(TableSupport.getPage());
解决办法
MyBatis-Plus的条件构造器常用方法参数需要使用方法引用传参。
Page<JeiEntity> jeiPage = wrapper.like(JeiEntity::getName, jeiQuery.getName()) .between(StringUtils.isNotBlank(jeiQuery.getBeginTime()) && StringUtils.isNotBlank(jeiQuery.getEndTime()), BaseEntity::getUpdated, jeiQuery.getBeginTime(), jeiQuery.getEndTime()) // .orderByDesc(BaseEntity::getId, JeiEntity::getName) .page(TableSupport.getPage());