当前使用版本(必填,否则不予处理)

3.3.1

该问题是如何引起的?(确定最新版也有问题再提!!!)

List对象转换

重现步骤(如果有就写完整)

  1. 我的目的: 获取集合对象List 然后转换为 List
  2. 我的调用方式:
// 调用


 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);
  1. 结果 List 对象全为空
  2. 原因 selectObjs 只返回第一个字段的值
  3. 问: 在不自己写处理集合映射的情况如何使用 接口实现? listObjs 失败

报错信息

Comment From: miemieYaho

resultType是object情况下就是取第一个字段的值,你用mybatis也一样的.只能自己写接口

Comment From: Giler

那 这个函数 不就没有用武之地了。default List listObjs(Wrapper queryWrapper, Function<? super Object, V> mapper)

Comment From: miemieYaho

这可以从obj转成具体的某个基本数据类型

Comment From: Giler

  1. 如果目的是获取对象的基本数据类型可以直接list配合queryWrapper
  2. 使用listObjs() 获取的字段是第一个然后进行映射,灵活性差一些。
  3. listObjs()的实现方式 给人以误解可以实现 object A -> object B
  4. listObjs() 如果可以实现 A ->B 可以一定程度上简化业务代码 提高美观。 以上

Comment From: miemieYaho

底层是mybatis,都是在mybatis的基础上提供的内置方法

Comment From: Giler

收到,感谢支持。