java spring data jpa复杂查询使用Specifications和Querydsl哪个更简便,更优雅?

看起来都很难啊,
我就是来抱怨抱怨
specifications又有一堆东西要学,教程好难,英文文档还看不懂,使用起来也不好看,
弄一些乱七八糟有的没的的概念;不好

querydsl又需要maven配置乱七八糟一对东西,为啥就不能简简单单的呢,

阅读 4.8k
1 个回答

用到了spring data jpa不想学习Specifications说不过去吧。而且也不难学习啊,学习的东西也并不多啊。

Specification<User> specification = new Specification<User>() {
            @Override
            public Predicate toPredicate(Root<User> root, CriteriaQuery<?> query, CriteriaBuilder cb) {
                List<Predicate> predicateList = new ArrayList<>();
      
                predicateList.add(cb.lessThan(root.<String>get("id"), 10));
           
                Predicate[] pre = new Predicate[predicateList.size()];
                return cb.and(predicateList.toArray(pre));
            }
        };

toPredicate里有了CriteriaQuery,有了CriteriaBuilder ,可以说对jpa规范的实现已经很好了。
英文文档看不懂这是借口,中文的教程也不少了。而且看看源码,也是很容易就理解怎么用了。

这个也许你可以看看https://www.imooc.com/learn/821

感觉你有点畏难,写代码有这种想法很不好。很多人,包括我自己经常做一些东西都是现学现用,相关知识太多了,我没有办法全部都记下来,主要就是靠学习能力来解决问题了。碰到难的东西学起来就会觉得越有意义,因为有很多人会因为难不会而不会。

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题