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

来源:4-2 分页查询

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

写回答 关注

3回答

  • 老猿
    2020-03-17 18:07:55

    你的这个问题看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>>>

    涛前李浪

    那这种该如何修改?

    2020-05-16 22:36:18

    共 1 条回复 >

  • 慕粉18295963308
    2020-07-14 14:10:53

    我也出现了同样的问题

  • 巧笑倩兮3568952
    2020-05-26 23:53:23
    @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入门

MyBatis-Plus框架入门必学课程!

56141 学习 · 381 问题

查看课程

相似问题