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
    评论
jpa querydsl是一种用于简化复杂操作的工具,在使用jpaquerydsl的整合过程中起到了很大的作用。通常情况下,使用apt插件生成的jpa使用的Q类是不能直接使用的,需要使用改造版的Q类(extends EntityPathBase<Entity>)。在使用jpaquerydsl整合的过程中,可以通过使用Q类来构建查询,它可以方便地操作数据库表中的字段并封装结果集到实体类中。在具体的代码实现中,可以使用JPASQLQuery类来进行查询操作,并使用Q类来指定查询的字段和临时表的字段。可以参考相关的文档和教程来了解更多关于jpaquerydsl的整合方法和使用技巧。 <span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *2* [JPAQueryDSL-JPA 使用指南](https://blog.csdn.net/footless_bird/article/details/129359394)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 50%"] - *3* [详解spring boot jpa整合QueryDSL来简化复杂操作](https://download.csdn.net/download/weixin_38686153/12761625)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值