当前位置: 首页 > 知识库问答 >
问题:

java mybatis 如何自己实现一下 Lambda。 如何把 Entity::getId 作为参数?

云远
2023-07-30

问题

需求

  • 我有一个实体 充血模型 Entity
  • 想要实现 fieldList ( 根据字段名获取list上的数据 )
class Entity {  List list    //  根据字段名获取list上的数据  public List fieldList () {} }

演示

Entity entity = new Entity();List list = [{id:11, name:12}, {id:21, name: 22} , { id: 31, name:32}]entity.setList(list);// 第一种entity.fieldList("id")  // [11,21,31]// 第二种 如何实现entity.fieldList(Entity::getId) //  [11,21,31]

现状

  • Entity.java

image.png

  • 实际使用 报错
    image.png

共有1个答案

谭越
2023-07-30

你这个我在mybatisplus中见过,你可以看一下mybatisplus中的com.baomidou.mybatisplus.core.toolkit.LambdaUtils#extract

正常getId的lambda方法应该是java.util.function.Function的字类,
现在要改成com.baomidou.mybatisplus.core.toolkit.support.SFunction,这个实现了Serializable,这样会有隐藏的writeReplace方法,writeReplace里能拿到这个lambda对应方法的名称

这样你就能根据lambda方法获取字段名称。

 类似资料:
  • 本文向大家介绍如何自己实现一个bind函数?相关面试题,主要包含被问及如何自己实现一个bind函数?时的应答技巧和注意事项,需要的朋友参考一下 参考回答: 原理:通过apply或者call方法来实现。 (1)初始版本 (2) 考虑到原型链 为什么要考虑?因为在new 一个bind过生成的新函数的时候,必须的条件是要继承原函数的原型 //这里需要一个寄生组合继承  

  • 本人一直很想自己造个 jQuery 的小库,第一是满足下自己,第二是去体验下 jQuery 内部的基情。

  • 问题内容: 我希望我的班级实现保存和加载功能,这些功能只是对班级进行Pickle。但是显然您不能以以下方式使用“自我”。你该怎么做? 问题答案: 这就是我最终要做的。更新方法是,我们保留我添加到类中的所有新成员变量,并仅更新上次腌制对象时存在的成员变量。在类本身内部维护保存和加载代码时,这似乎是最简单的,因此调用代码仅执行object.save()。

  • 本文向大家介绍ArrayList和HashMap如何自己实现实例详解,包括了ArrayList和HashMap如何自己实现实例详解的使用技巧和注意事项,需要的朋友参考一下  ArrayList和HashMap ArrayList的存储就是一个数组, HashMap的存储是一个数组加一个链表, 以下实现的MyArrayList及MyHashMap,在实际的工作中都是用不上的,最有可能用得到的地方就是

  • 最近我在使用c语言时遇到了一些问题,基本上是这样的: 在一个函数(比如intmain)中,我声明了一个变量Y=5,我有一个lambda函数,它接收一个值并将Y相加; 我的问题是:我需要将这个lambda函数传递给一个已经存在的函数,这样它就可以在另一个函数内部调用。 我尝试了几件事,但没有一个像我预期的那样工作(有些甚至不起作用): 另一个问题是我不能改变我的receives函数签名,因为代码的剩

  • 根据Docker文档,要生成自己的映像,必须始终使用指令指定基映像。 编辑:创建基本图像的官方文档