当前使用版本(必填,否则不予处理)
3.3.1
该问题是如何引起的?(确定最新版也有问题再提!!!)
List对象转换
重现步骤(如果有就写完整)
- 我的目的: 获取集合对象List
然后转换为 List - 我的调用方式:
// 调用
List<DriverRes> driverList = driverService.listObjs(queryWrapper,DriverBizImpl::apply);
// 参考内容
// 1. listObjs
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());
}
// 2. selectObjs
/**
* 根据 Wrapper 条件,查询全部记录
* <p>注意: 只返回第一个字段的值</p>
*
* @param queryWrapper 实体对象封装操作类(可以为 null)
*/
List<Object> selectObjs(@Param(Constants.WRAPPER) Wrapper<T> queryWrapper);
- 结果 List
对象全为空 - 原因 selectObjs 只返回第一个字段的值
- 问: 在不自己写处理集合映射的情况如何使用 接口实现? listObjs 失败
报错信息
Comment From: miemieYaho
resultType是object情况下就是取第一个字段的值,你用mybatis也一样的.只能自己写接口
Comment From: Giler
那 这个函数 不就没有用武之地了。default
Comment From: miemieYaho
这可以从obj转成具体的某个基本数据类型
Comment From: Giler
- 如果目的是获取对象的基本数据类型可以直接list配合queryWrapper
- 使用listObjs() 获取的字段是第一个然后进行映射,灵活性差一些。
- listObjs()的实现方式 给人以误解可以实现 object A -> object B
- listObjs() 如果可以实现 A ->B 可以一定程度上简化业务代码 提高美观。 以上
Comment From: miemieYaho
底层是mybatis,都是在mybatis的基础上提供的内置方法
Comment From: Giler
收到,感谢支持。