当前使用版本(必填,否则不予处理)
3.3.2 查看最新版本3.4.2还是这样
该问题是如何引起的?(确定最新版也有问题再提!!!)
改进
重现步骤(如果有就写完整)
com.baomidou.mybatisplus.extension.service 下 IService 接口里
default < V > List< V > listObjs(Wrapper< T > queryWrapper, Function<? super Object, V> mapper) { return getBaseMapper().selectObjs(queryWrapper).stream().filter(Objects::nonNull).map(mapper).collect(Collectors.toList()); }
? super Object 应该改为 ? super T 这样会比较好些
报错信息
这样手写mapper不用强转
Comment From: miemieYaho
T 是 entity,是不会返回entity的
Comment From: wdd15359180132
T 是 entity,是不会返回entity的
T的确是不会返回的, Function<? super Object, V> 是用来把实体转成 V类的但是接口 用的是? super Object 就会要强制转换 转成实体才能用
Comment From: wdd15359180132
T 是 entity,是不会返回entity的 就比如这样 List
integers = cmContactService.listObjs(new QueryWrapper<>(), (u) -> ((CmContact) u).getContactNo());
Comment From: wdd15359180132
T 是 entity,是不会返回entity的
下面这样就会报错
List
Comment From: MrRohwei
T 是 entity,是不会返回entity的
下面这样就会报错 List integers = cmContactService.listObjs(new QueryWrapper<>(), (u) -> u.getContactNo())
人家就不是返回的整个实体对象,仔细看一下源码,里面只返回查询的第一个字段。我也被这个坑了。