JPA使用(Querydsl)

1.新建entity
在这里插入图片描述
多对多的处理方式,在中间表的实体假如一对一
在这里插入图片描述
一对多的处理方式
在这里插入图片描述
在这里插入图片描述

2.创建dao
在这里插入图片描述
复杂sql直接在这里编写sql,然后直接调用dao方法

3.创建实体类并提供与entity的转换构造方法
在这里插入图片描述

4.repo层:业务处理,增删改加事务,调用dsl
在这里插入图片描述

5.dsl层:jpa处理,封装实体类返回,limit的处理方式
在这里插入图片描述
在这里插入图片描述

6.where多个条件需要判断的处理方式以及like处理方式
在这里插入图片描述
在这里插入图片描述

7.in的处理方式
在这里插入图片描述

8.文本类型需要处理
在这里插入图片描述
9.in后面可以直接加子查询,而form后面则不行,除非用queryDsl + blaze-persistence

10.对于需要表名动态拼接,可以写一个拦截器NamingInterceptor 继承EmptyInterceptor,重写onPrepareStatement方法对sql预处理。可以定义一个ThreLocal进行存储拼接内容

在这里插入图片描述

在这里插入图片描述

11.jpa很多时候返回的是Tuple类型(只要是查询多个指定字段就是返回Tuple类型),这时候可以使用Projections.bean(),返回指定泛型

 public List<BizType> findBizByMsgType(int userId, int msgType) {
        JPAQuery<BizType> query = queryFactory.select(Projections.bean(
                BizType.class, businessTypeEntity.id,
                businessTypeEntity.name, businessTypeEntity.startTime, businessTypeEntity.endTime,
                businessTypeEntity.type, ub.busType)).from(ub).leftJoin(businessTypeEntity).on(ub.typeId.eq(businessTypeEntity.id)).
                leftJoin(bs).on(ub.typeId.eq(bs.biztypeId)).leftJoin(es).on(bs.enterpriseSpecnumBindId.eq(es.id));
        if (msgType==2){
            query.leftJoin(sn).on(es.specnumId.eq(sn.id)).leftJoin(cc).on(sn.channelId.eq(cc.id));
        }
        return query.where(ub.userId.eq(userId).and(es.msgType.eq(msgType)).and(businessTypeEntity.state.eq(1))).
                orderBy(businessTypeEntity.id.asc()).fetch();
    }
  1. update的时候,多个字段使用多个set实现. 在这里插入图片描述

Querydsl-JPA学习(入门篇)
Querydsl-JPA学习(进阶篇)
参考

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
QueryDSL 是一个用于构建类型安全的 SQL 查询的 Java 框架。而 jpa2.2.10 是 Java Persistence API(JPA)的一个版本。如果你想在 jpa2.2.10 中使用 QueryDSL,你需要先引入 QueryDSL 的依赖,然后在你的代码中使用它提供的 API 来构建和执行查询。 首先,你需要在你的项目中引入 QueryDSL 的依赖。例如,如果你正在使用 Maven,可以在你的 pom.xml 文件中添加下面的依赖: ``` <dependency> <groupId>com.querydsl</groupId> <artifactId>querydsl-jpa</artifactId> <version>4.2.2</version> </dependency> ``` 然后,你需要在你的 JPA 实体类上使用 `@QueryEntity` 注解。这个注解会告诉 QueryDSL 你的实体类可以用于查询。 接下来,你可以使用 QueryDSL 的 API 来构建查询。例如,下面的代码演示了如何使用 QueryDSL 构建一个简单的查询,查询所有年龄大于 18 岁的用户: ``` QUser user = QUser.user; JPAQueryFactory queryFactory = new JPAQueryFactory(entityManager); List<User> users = queryFactory .selectFrom(user) .where(user.age.gt(18)) .fetch(); ``` 在这个例子中,首先我们定义了一个 `QUser` 类型的变量 `user`,这个变量是由 QueryDSL 自动生成的。然后我们创建了一个 `JPAQueryFactory`,它用于执行查询并返回查询结果。最后,我们使用 `queryFactory` 来构建查询,查询所有年龄大于 18 岁的用户。 希望这个回答能够帮助你理解如何在 jpa2.2.10 中使用 QueryDSL

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值