使用 MongoTemplate 如何优雅地避免魔法值

2020-06-11 17:20:49 +08:00
 zero47

使用 MongoTemplate 查询都需要把实体类的属性名字以字符串的信息列出,如何优雅地避免这些魔法值,做到使用类的属性来查询呢? 例如:

实体类:

@Document(collection = "demo")
@Data
public class Demo {
    private Date createTime;
}

查询语句:

Query query = new Query(where("createTime").gte(fromDate).lte(toDate);

有没有工具类可以直接从 Demo.createTime.getName()的方式获取属性名呢?

1740 次点击
所在节点    程序员
5 条回复
joesonw
2020-06-11 18:31:36 +08:00
YUyu101
2020-06-11 18:52:17 +08:00
换 c#
JasonLaw
2020-06-11 19:07:03 +08:00
aguesuka
2020-06-12 08:18:18 +08:00
定义一个 function 接口,继承 serializable 。比如 Serializable fun =(Serializable & Function<>) Dome::createTime 。反射 fun 的 writeReplace 方法,SerializableLambda metadata = (SerializableLambda) fun.writeReplace()//使用反射因为这是个 private 方法
SerializableLambda 中可以获得 Dome 和 creatTime
aguesuka
2020-06-12 08:20:58 +08:00

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/680755

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX