QueryDSL配置

article/2025/10/16 15:43:29

QueryDSL配置

1:maven配置-

 <dependency><groupId>com.querydsl</groupId><artifactId>querydsl-jpa</artifactId><version>5.0.0</version></dependency><dependency><groupId>com.querydsl</groupId><artifactId>querydsl-sql</artifactId><version>5.0.0</version></dependency><dependency><groupId>com.querydsl</groupId><artifactId>querydsl-apt</artifactId><version>5.0.0</version></dependency>

2:maven配置

<build><plugins><plugin><groupId>org.springframework.boot</groupId><artifactId>spring-boot-maven-plugin</artifactId></plugin><plugin><groupId>org.apache.maven.plugins</groupId><artifactId>maven-surefire-plugin</artifactId><version>2.22.1</version><configuration><skipTests>true</skipTests></configuration></plugin><!--apt编译插件--><plugin><groupId>com.mysema.maven</groupId><artifactId>apt-maven-plugin</artifactId><version>1.1.3</version><executions><execution><goals><goal>process</goal></goals><configuration><outputDirectory>target/generated-sources/java</outputDirectory><processor>com.querydsl.apt.jpa.JPAAnnotationProcessor</processor></configuration></execution></executions></plugin><plugin><groupId>org.apache.maven.plugins</groupId><artifactId>maven-resources-plugin</artifactId><configuration><encoding>UTF-8</encoding><nonFilteredFileExtensions><nonFilteredFileExtension>xlsx</nonFilteredFileExtension><nonFilteredFileExtension>xls</nonFilteredFileExtension></nonFilteredFileExtensions></configuration></plugin><!--打包去掉jar包内的配置文件--><plugin><groupId>org.apache.maven.plugins</groupId><artifactId>maven-jar-plugin</artifactId><configuration><excludes><exclude>application.yml</exclude></excludes></configuration></plugin></plugins></build>

3:配置类JpaQueryConfig

@Configuration
public class JpaQueryConfig {@Beanpublic JPAQueryFactory jpaQuery(EntityManager entityManager) {return new JPAQueryFactory(entityManager);}
}

4:配置类

@Configuration
public class SqlQueryConfig {@Beanpublic SQLQueryFactory sqlQueryFactory(DataSource dataSource){SQLTemplates sqlTemplates = MySQLTemplates.builder().printSchema().build();com.querydsl.sql.Configuration configuration = new com.querydsl.sql.Configuration(sqlTemplates);configuration.setUseLiterals(true);return new SQLQueryFactory(configuration,dataSource);}
}

5:application.yml 看着改

server:port: 8080
spring:application:name: spring-boot-jpa-hikarijpa:#database: mysqlshow-sql: true#generate-ddl: true#database-platform: org.hibernate.dialect.MySQL5InnoDBDialecthibernate:ddl-auto: updateproperties:hibernate:format_sql: truedatasource:url: jdbc:mysql://localhost:3306/db2022?serverTimezone=Asia/Shanghai&useUnicode=true&characterEncoding=UTF-8&useSSL=falseusername: rootpassword: 123456driver-class-name: com.mysql.cj.jdbc.Drivertype: com.zaxxer.hikari.HikariDataSourcehikari:auto-commit: trueminimum-idle: 2idle-timeout: 60000connection-timeout: 30000max-lifetime: 1800000pool-name: DatebookHikariCPmaximum-pool-size: 5
logging:level:root: error

6:repository类 根据entity配置JpaRepository<T,ID> ID是主键类型,(JPA语法,可用),自定义方法。

public interface UserRepository extends JpaRepository<User,Integer> {@Transactional@Modifying(clearAutomatically = true)@Query(value = "update user set username=?1 where id=?2",nativeQuery = true)void updateUser(String name, Integer id);@Transactional//@Modifying(clearAutomatically = true)@Query(value = "select username from user where id=?1",nativeQuery = true)String findUserNameById(Integer id);@Transactional@Modifying(clearAutomatically = true)//Jpa底层实现会有一级缓存,也就是在更新完数据库后,如果后面去用这个对象,你再去查这个对象,这个对象是在一级缓存,但是并没有跟数据库同步,此时使用clearAutomatically=true,就会刷新Hibernate的一级缓存, 否则在同一接口中,更新一个对象,接着查询这个对象,那么查出来的这个对象还是之前的没有更新前的状态。@Delete(value = "delete from user where username=?1")void deleteByUserName(String username);
}

7:complie生成Q类 service导入 JPAQueryFactory queryFactory,或者 SQLQueryFactory sqlQueryFactory;

@Autowired
JPAQueryFactory queryFactory;
//Q类
QNews news = QNews.news;
QUser user = QUser.user;
List<News> userList = queryFactory.selectFrom(news).innerJoin(news).on(user.id.eq(user.id)).fetch();

8:保存操作SQLQueryFactory ,jpa试过没生效。new RelationalPathBase<>(User.class,QUser.user.getMetadata().getName(),“db2022”,“user”),db2022数据库名、user表名。

SQLInsertClause insert = sqlQueryFactory.insert(new RelationalPathBase<>(User.class,QUser.user.getMetadata().getName(),"db2022","user"));
long sadad = insert.columns(user.id,user.userName,user.passWord).values(2023883, "whfang22222","null").execute();
List<User> users = queryFactory.selectFrom(user).where(user.id.eq(21023883)).fetch();
users.stream().forEach(o-> System.out.println(o));

9:实体类映射

@Data
@Entity
@Table(name="user")
public class User {@Id@GeneratedValue(strategy= GenerationType.IDENTITY)private Integer id;@Column(name= "username")private String userName;@Column(name = "password")private String passWord;@Column(name = "nick_name")private String nickName;private Integer age;private String sex;private Integer role;
}

queryDSL-sql:maven配置:
tableNamePattern是表名

<build><plugins><plugin><groupId>org.springframework.boot</groupId><artifactId>spring-boot-maven-plugin</artifactId><configuration><excludes><exclude><groupId>org.project.lombok</groupId><artifactId>lombok</artifactId></exclude></excludes></configuration></plugin><plugin><groupId>com.querydsl</groupId><artifactId>querydsl-maven-plugin</artifactId><version>${querydsl.version}</version><executions><execution><goals><goal>export</goal></goals></execution></executions><configuration><jdbcDriver>com.mysql.cj.jdbc.Driver</jdbcDriver><jdbcUrl>jdbc:mysql://localhost:3306/regulation_engine_db?useUnicode=true&amp;characterEncoding=UTF-8&amp;useSSL=false</jdbcUrl><packageName>com.iflytek.entity</packageName><jdbcUser>cdss</jdbcUser><jdbcPassword>Cdss!2018</jdbcPassword><tableNamePattern>component_db,ruler_manager,script_rule,model_entity,regulations,data_dict</tableNamePattern><exportBeans>true</exportBeans><targetFolder>src/main/java</targetFolder><sourceFolder>src/main/java</sourceFolder><customTypes><customType>com.querydsl.sql.types.UtilDateType</customType><customType>com.iflytek.medicalboot.core.querydsl.DateUtilDateType</customType></customTypes><serializerClass>com.iflytek.medicalboot.core.querydsl.CoreMetaDataSerializer</serializerClass><beanSerializerClass>com.iflytek.medicalboot.core.querydsl.CoreBeanSerializer</beanSerializerClass><!--添加配置,避免生成 BigIntegerByte 类型字段--><numericMappings><numericMapping><total>4</total><decimal>0</decimal><javaType>java.lang.Integer</javaType></numericMapping><numericMapping><total>5</total><decimal>0</decimal><javaType>java.lang.Integer</javaType></numericMapping><numericMapping><total>19</total><decimal>0</decimal><javaType>java.lang.Long</javaType></numericMapping></numericMappings></configuration><dependencies><dependency><groupId>mysql</groupId><artifactId>mysql-connector-java</artifactId><version>8.0.16</version></dependency></dependencies></plugin></plugins></build>

注:queryDSL-sql需要手动生成Q类
在这里插入图片描述


http://chatgpt.dhexx.cn/article/usDW1itB.shtml

相关文章

Elasticsearch:DSL Query

Query DSL的分类 Elasticsearch提供了基于JSON的DSL(Domain Specific Language)来定义查询。常见的查询类型包括&#xff1a; 查询所有&#xff1a;查询出所有的数据&#xff0c;一般测试用&#xff0c;例如&#xff1a;match_all&#xff0c;但有分页限制&#xff0c;一次20…

SpringBoot+Querydsl 框架,大大简化复杂查询操作

概述 本篇博客主要将介绍的是利用spring query dsl框架实现的服务端查询解析和实现介绍。 查询功能是在各种应用程序里面都有应用&#xff0c;且非常重要的功能。用户直接使用的查询功能往往是在我们做好的UI界面上进行查询&#xff0c;UI会将查询请求发给查询实现的服务器&a…

QueryDSL 关于Q类找不到的问题

先编译代码&#xff0c;如果是在idea中&#xff0c;光标移动到项目上&#xff0c;F4&#xff0c;让后如图操作 回到项目中编码&#xff0c;就可以找到Q类了

JPA 之 QueryDSL-JPA 使用指南

Querydsl-JPA 框架&#xff08;推荐&#xff09; 官网&#xff1a;传送门 参考&#xff1a; JPA整合Querydsl入门篇SpringBoot环境下QueryDSL-JPA的入门及进阶 概述及依赖、插件、生成查询实体 1.Querydsl支持代码自动完成&#xff0c;因为是纯Java API编写查询&#xff0…

使用spring data Querydsl 实现动态查询功能

Table of Contents 概述 定义查询请求 google-like查询 特定字段的类sql查询 使用Spring Data Querydsl 利用Spring Query DSL实现动态查询 实现过程中的难题 主表包含多个子表数据时的AND查询 概述 本篇博客主要将介绍的是利用spring query dsl框架实现的服务端查询解…

关于 QueryDSL 配置和使用(详细)

关于 QueryDSL 最近写项目&#xff0c;使用到了 Jpa 这个 ORM 规范支持&#xff0c;使用注解的方式实现 Sql &#xff0c;但是用过 Jpa 的同学都知道 Jpa 对于单表操作很灵活&#xff0c;但是对于复杂一些的 SQL 就是很不友好了&#xff0c;所以这个地方我们就用到了 QueryDSL…

Spring Boot配置QueryDSL(生成Query查询实体类,查询数据)

1 QueryDSL QueryDSL仅仅是一个通用的查询框架&#xff0c;专注于通过Java API构建类型安全的SQL查询。 Querydsl可以通过一组通用的查询API为用户构建出适合不同类型ORM框架或者是SQL的查询语句&#xff0c;也就是说QueryDSL是基于各种ORM框架以及SQL之上的一个通用的查询框架…

微信开发之服务号设置

服务号设置 公众号开发主要用到AppID AppSecret 以下操作前提是&#xff0c;服务号已认证 在开发基本设置里 设置开发者模式开启设置appSecret 需要管理员扫码设置ip白名单 需要管理员扫码服务器配置启用&#xff0c;填写服务器验证地址 在开发者工具&#xff0c;web开发者工具…

微信服务号开发

最近终于完成了团队微信服务号的开发&#xff0c;深深的喘了一口气&#xff0c;还记得在差不多10天前&#xff0c;我们几个为了参加学校服务外包大赛的队友一起讨论选题&#xff0c;最终确定了以微信为基底开发一个人力资源管理系统的微信公众平台&#xff0c;几天后&#xff0…

微信开发公众号

背景&#xff1a; 过年前后做了个微信公众号项目&#xff0c;已经过去一段时间了&#xff0c;抽空回忆总结下基本流程吧&#xff0c;不然很快估计自己就忘了。。 文章目录 一、注册公众号二、了解公众号管理页面三、必备开发者工具的使用1.开发者文档2.在线接口调试工具3.web开…

微信服务号Java开发(一)

发送模板消息 1. 服务器配置 解析&#xff1a;微信发送一个get请求&#xff0c;并携带4个参数&#xff1a;signature、timestamp、nonce、echostr。开发者需要验证该请求是否来源于微信&#xff0c;验证方法&#xff1a; 1&#xff09;将token、timestamp、nonce三个参数进行字…

微信公众号之接入微信公众号服务器开发(二)

说明&#xff1a;该篇博客是博主一字一码编写的&#xff0c;实属不易&#xff0c;请尊重原创&#xff0c;谢谢大家&#xff01; 接着上一篇博客继续往下写 &#xff1a;https://blog.csdn.net/qq_41782425/article/details/85319116 一丶叙述 开发说明 Python代码实现&…

教你3分钟快速开发微信公众号[订阅号][服务号]

Wx-tools是基于微信公众平台API的轻量级框架。 基于Wx-tools你可以开速开发一个订阅号/服务号的web应用后台。 博主最近终于有空&#xff01;&#xff01;已经更新到2.0.0啦&#xff01;&#xff01; GitHub仓库 下载wx-tools-2.0.0.jar wx-tools开发文档 大三做过几个基于…

微信公众号开发之配置开发服务器

微信公众号开发详细教程 微信公众号开发文档 需不需要开发服务器应该根据自己的业务需求来决定。如果你只是简单使用微信公众号&#xff0c;发送推文等简单需求&#xff0c;你就不需要的配置自己的开发服务器&#xff0c;微信公众号平台功能十分强大&#xff0c;不懂技术的用…

微信服务号的开发-服务器配置

微信服务号开发-服务器配置 本期是将微信开发第一步&#xff0c;也就是服务器配置&#xff0c;以及校验。 话不多说&#xff0c;我们主要讲重点。既然是微信服务号开发&#xff0c;首先我们需要一个测试号&#xff0c;大家可以自己去微信公众平台申请一个。 申请完后&#xff…

微信公众号开发:服务器配置(Java)

由于项目需要微信公众号的开发&#xff0c;弄了老半天&#xff0c;发现也不是那么难弄。 对于微信公众号开发&#xff0c;首先要有开发者权限然后进行基本的配置。 登录进微信公众号平台&#xff0c;首页最下面有个基本配置&#xff1a; 进入基本配置后&#xff0c;会看到两个…

微信公众号开发——服务器配置

一、前提 1、购买一台云服务器 域名解析 这里用的宝塔服务 创建域名 绑定到指定的目录 wx.php 代码如下 <?php /** * wechat php test */ //define your token define("TOKEN", "weixin"); $wechatObj new wechatCallbackap…

微信公众号开发--服务号

前言 因公司需要开发一款手机打卡程序&#xff0c;本人没有安卓APP开发经验&#xff0c;所以决定将写个服务号的公众号&#xff0c;集外出打卡&#xff0c;打卡查询等功能; 一&#xff0c;开发前测试帐号申请 以下是官方给出的建议&#xff0c;大家可以多参考参考 1&#xf…

如何使用开发者服务器运维微信公众号

文章目录 1 如何把微信公众号授权给开发者服务器2 如何使用代码把开发者服务器与微信服务器进行关联 很多人都有自己的服务器&#xff0c;特别是对于大学生而言&#xff0c;很多服务器公司都对学生有优惠&#xff0c;例如腾讯云只要1元每月&#xff1a;http://blog.csdn.net/ti…

python 微信公众号开发[1] 后台服务器端配置与公众号开发配置

更新时间&#xff1a;2020年3月7日 微信公众号开发的硬件必备条件&#xff1a;&#xff08;1&#xff09;申请一个公众号 &#xff08;2&#xff09;有公网ip的服务器&#xff08;最好是阿里云&#xff0c;腾讯云等的云服务器&#xff09;&#xff08;3&#xff09;解析到&…