fun test() {?userRepository.listAll(Criteria.where(CssUser::account.mongoFiled()).`is`("admin").and(CssUser::name.mongoFiled()).`is`("你的名字"))?}复制代码
接着我们可以来说说 Java 的做法,首先也需要一个方法通过 lambda 拿到字段名,这个方法网上有很多我不再赘述,但是拿到之后该怎么办呢?你当然可以直接通过工具类的静态方法去拿,就像这样:
fun test() {?userRepository.listAll(Criteria.where(Util.getName(CssUser::account).`is`("admin").and(Util.getName(CssUser::name).`is`("你的名字"))?}复制代码
可能到这一步看起来还是略微不雅,追求极致的小伙伴这个时候就可以再度发挥封装的本色,将 Criteria 类封装出一个新的查询条件类,比如叫 Condition,然后将 Criteria 装在里面再封装一下查询时的相关常用方法,就像这样(注意此处的 Funtion 入参只是一个例子,实际应该是泛型):public class Condition {private Criteria criteria = new Criteria();?public Condition where(Function<String, String> function, String value) {criteria.andOperator(Criteria.where(Util.getName(function)).is(value));return this;}}复制代码
除了 where 方法你还可以继续封装 gt、lt、or 等常用方法,并且它们还能形成链式调用,最终的效果是这样的:public static void main(String[] args) {Criteria criteria = new Condition().where(CssUser::getName, "你的名字").where(CssUser::getAccount, "admin");}复制代码
是不是更优雅了呢?4. 最后今天是满满的技术干货,希望 Get 到新技能的小伙伴可以积极的点赞,有什么问题都可以再评论区留言,我会积极对线的,下篇见 。
【二次封装 Spring Data JPA/MongoDB,打造更易用的数据访问层】作者:和耳朵
链接:
https://juejin.cn/post/7168133740093243423
推荐阅读
- 如何解一元二次方程应用题
- 油价本周四或再迎上调 今晚油价迎来今年第二次下调
- 人在空中为什么不能再跳第二次?
- 第二次世界大战是人类浩劫 第2次世界大战给人类带来的灾难
- 妄想山海云端岳云鲲在哪?
- SpringBoot项目基础设施搭建
- OkHttp完美封装,用一行代码搞定外部请求,使用起来很方便
- 标书封条制作和封装注意事项
- 文艺复兴是什么梗?
- 第二次世界大战两极对峙 第三次世界大战正在酝酿