Spring Data JPA 整合SSM教程(二)

本文介绍了Spring Data JPA中JpaSpecificationExecutor接口用于动态查询的优势和用法,包括精准匹配、模糊匹配、排序、多条件拼接和分页查询。同时,详细讲解了一对多和多对多的多表查询实现,涉及@OneToMany、@ManyToOne和@ManyToMany等注解的使用,并提到了Spring Data的默认事务处理方式。
摘要由CSDN通过智能技术生成

点击上方 Java老铁,并选择 设为星标

优质文章和资料会及时送达

上一篇:Spring Data Jpa 整合SSM教程

5.Specifications动态查询

有时我们在查询某个实体的时候,给定的条件是不固定的,这时就需要动态构建相应的查询语句,在Spring Data JPA中可以通过JpaSpecificationExecutor接口查询。相比JPQL,其优势是类型安全,更加的面向对象。
5.1精准匹配
/**
     * 精准匹配
     */
    @Test
    public void tset3(){
        Specification<Class> specification = new Specification<Class>() {
            public Predicate toPredicate(Root<Class> root, CriteriaQuery<?> query, CriteriaBuilder cb) {
                //获取属性
                Path<Object> className = root.get("className");
                //构造查询
                Predicate predicate = cb.equal(className, "20班");
                return predicate;
            }
        };
        Class cla = classDao.findOne(specification);
        System.out.println(cla);
    }
5.2 模糊匹配
/**
     * 模糊匹配
     */
    @Test
    public void tset4(){
        Specification<Class> specification = new Specification<Class>() {
            public Predicate toPredicate(Root<Class> root, CriteriaQuery<?> query, CriteriaBuilder cb) {
                //获取属性
                Path className = root.get("className");
                //构造查询
                Predicate predicate = cb.like(className.as(String.class), "%班");
                return predicate;
            }
        };
        List<Class> all = classDao.findAll(specification);
        for (Class aClass : all) {
            System.out.println(aClass);
        }
    }
5.3 排序
/**
     * 排序
     */
    @Test
    public void test5(){
        Specification<Class> specification = new Specification<Class>() {
            public Predicate toPredicate(Root<Class> root, CriteriaQuery<?> query, CriteriaBuilder cb) {
                Path<Object> className = root.get("className");
                Predicate predicate = cb.like(className.as(String.class), "%班");
                return predicate;
            }
        };
        Sort sort = new Sort(Sort.D
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值