为了账号安全,请及时绑定邮箱和手机立即绑定

按照老师的代码敲,示例是selectMapsPage,但是报错

代码为:

@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确实没有推断出来,不过代码相同,为什么跑步起来?

正在回答

3 回答

你的这个问题看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>>>
0 回复 有任何疑惑可以回复我~
#1

涛前李浪

那这种该如何修改?
2020-05-16 回复 有任何疑惑可以回复我~

我也出现了同样的问题

0 回复 有任何疑惑可以回复我~
@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);
}


1 回复 有任何疑惑可以回复我~

举报

0/150
提交
取消

按照老师的代码敲,示例是selectMapsPage,但是报错

我要回答 关注问题
意见反馈 帮助中心 APP下载
官方微信