慕慕7355481
2020-03-14 10:45
代码为:
@Test public void selectMapsPage() { LambdaQueryWrapper<User> userLambdaQueryWrapper = new LambdaQueryWrapper<>(); userLambdaQueryWrapper.gt(User::getAge, 26); Page<User> userPage = new Page<>(1, 2); IPage<Map<String, Object>> mapIPage = userMapper.selectMapsPage(userPage, userLambdaQueryWrapper); System.out.println("总记录数:" + mapIPage.getTotal()); System.out.println("总页数:" + mapIPage.getPages()); List<Map<String, Object>> mapList = mapIPage.getRecords(); mapList.forEach(System.out::println); }
报错为:
Error:(638, 57) java: 无法将接口 com.baomidou.mybatisplus.core.mapper.BaseMapper<T>中的方法 selectMapsPage应用到给定类型; 需要: E,com.baomidou.mybatisplus.core.conditions.Wrapper<com.example.curd.entity.User> 找到: com.baomidou.mybatisplus.extension.plugins.pagination.Page<com.example.curd.entity.User>,com.baomidou.mybatisplus.core.conditions.query.QueryWrapper<com.example.curd.entity.User> 原因: 推断类型不符合上限 推断: com.baomidou.mybatisplus.extension.plugins.pagination.Page<com.example.curd.entity.User> 上限: com.baomidou.mybatisplus.core.metadata.IPage<java.util.Map<java.lang.String,java.lang.Object>>
在编写
IPage<Map<String, Object>> mapIPage = userMapper.selectMapsPage(userPage, userLambdaQueryWrapper);
时,idea确实没有推断出来,不过代码相同,为什么跑步起来?
你的这个问题看MP源码:
/** * 根据 Wrapper 条件,查询全部记录(并翻页) * * @param page 分页查询条件 * @param queryWrapper 实体对象封装操作类 */ <E extends IPage<Map<String, Object>>> E selectMapsPage(E page, @Param(Constants.WRAPPER) Wrapper<T> queryWrapper);
E page,这个参数,Page的泛型不是实体,而是
<E extends IPage<Map<String, Object>>>
我也出现了同样的问题
@Test void selectByPageMap() { QueryWrapper<User> wrapper = new QueryWrapper<>(); wrapper.like("name", "雨"); IPage<Map<String, Object>> page = new Page<>(1, 2); IPage<Map<String, Object>> userPage = userMapper.selectMapsPage(page, wrapper); System.out.println(userPage.getPages()); System.out.println(userPage.getTotal()); List<Map<String, Object>> users = userPage.getRecords(); users.forEach(System.out::println); }
MyBatis-Plus入门
56141 学习 · 381 问题
相似问题