当前位置: 首页 > news >正文

聊聊querydsl的生成类

为什么80%的码农都做不了架构师?>>>   hot3.png

本文主要聊一下querydsl的生成类

maven

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

plugin

            <plugin>
				<groupId>com.querydsl</groupId>
				<artifactId>querydsl-maven-plugin</artifactId>
				<executions>
					<execution>
						<phase>generate-sources</phase>
						<goals>
							<goal>process</goal>
						</goals>
						<configuration>
							<outputDirectory>target/generated-sources</outputDirectory>
							<processor>com.querydsl.apt.jpa.JPAAnnotationProcessor</processor>
						</configuration>
					</execution>
				</executions>
			</plugin>

生成Q类

mvn compile

不过由于是生成在target里头的,整体感觉对IDE不是太友好,另外这种生成代码的方式,有点鸡肋,每当修改字段或者增删字段时,就得重新生成一次,非常费劲。如果要生成,还是基于字节码动态生成的靠谱一点,至少方便一些。

手写Q类

对于字段少的类,可以自己手写,Q类,如下:

@Generated("com.querydsl.sql.codegen.MetaDataSerializer")
public class QDemo extends RelationalPathBase<QDemo> {

    public final NumberPath<Long> id = createNumber("id",Long.class);
    public final NumberPath<Long> countNum = createNumber("countNum",Long.class);
    public final StringPath  name = createString("name");

    public static QDemo qDemo = new QDemo(QDemo.class.getSimpleName(),null,"demo");

    public QDemo(String path, String schema, String table){
        super(Demo.class, path, schema, table);
        addMeta();
    }
    
    public void addMeta(){
        addMetadata(countNum, ColumnMetadata.named("count_num"));
        addMetadata(name, ColumnMetadata.named("name"));
    }
}

小结

querydsl强大是强大,但是Q类这么一搞,有点搞复杂了,想完全屏蔽sql是不可能的,有一定适用场景,但不是万能。

doc

  • querydsl

转载于:https://my.oschina.net/go4it/blog/1577028

相关文章:

  • Spring IOC及AOP学习总结
  • Linux CentOS 下的MySQL数据库安装与配置
  • 【转】IOS中的release和nil
  • Oracle Study之案例--安装Oracle内核参数配置
  • Android广播机制(两种注册方法)与 中断广播
  • C语言:用递归实现将输入的整数按逆序输出。如输入12345,则输出54321。
  • CentOS 5/6下搭建Subversion+HTTPS+LDAP
  • 团队编程项目作业6-程序维护
  • 新的展望
  • 在线网摘收藏?让Google来吧!
  • 【原】函数返回一个指针以及返回STL对象的问题
  • RemoteFX 认证终端设备
  • Android 6.0 RecyclerView嵌套在ScrollView中显示不全
  • 简单实现并发:python concurrent模块
  • SCCM 2007 R2 setp by setp(十)-SCCM客户端部署之客户端推送安装
  • 深入了解以太坊
  • 【面试系列】之二:关于js原型
  • JAVA之继承和多态
  • MyEclipse 8.0 GA 搭建 Struts2 + Spring2 + Hibernate3 (测试)
  • Twitter赢在开放,三年创造奇迹
  • webpack项目中使用grunt监听文件变动自动打包编译
  • 测试如何在敏捷团队中工作?
  • 前端存储 - localStorage
  • 入职第二天:使用koa搭建node server是种怎样的体验
  • 深度学习在携程攻略社区的应用
  • 实现菜单下拉伸展折叠效果demo
  • 使用iElevator.js模拟segmentfault的文章标题导航
  • 吴恩达Deep Learning课程练习题参考答案——R语言版
  • 想写好前端,先练好内功
  • 小程序开发中的那些坑
  • Hibernate主键生成策略及选择
  • python最赚钱的4个方向,你最心动的是哪个?
  • 选择阿里云数据库HBase版十大理由
  • # centos7下FFmpeg环境部署记录
  • (aiohttp-asyncio-FFmpeg-Docker-SRS)实现异步摄像头转码服务器
  • (pt可视化)利用torch的make_grid进行张量可视化
  • (附源码)springboot 个人网页的网站 毕业设计031623
  • (附源码)springboot宠物医疗服务网站 毕业设计688413
  • (附源码)ssm高校运动会管理系统 毕业设计 020419
  • (十八)devops持续集成开发——使用docker安装部署jenkins流水线服务
  • (提供数据集下载)基于大语言模型LangChain与ChatGLM3-6B本地知识库调优:数据集优化、参数调整、Prompt提示词优化实战
  • (转)Linux整合apache和tomcat构建Web服务器
  • (转)Sql Server 保留几位小数的两种做法
  • (最完美)小米手机6X的Usb调试模式在哪里打开的流程
  • ./和../以及/和~之间的区别
  • .NET Core 中的路径问题
  • .NET 中什么样的类是可使用 await 异步等待的?
  • .NET/C# 在 64 位进程中读取 32 位进程重定向后的注册表
  • .NET开发不可不知、不可不用的辅助类(三)(报表导出---终结版)
  • ??myeclipse+tomcat
  • [ C++ ] template 模板进阶 (特化,分离编译)
  • [Android Pro] listView和GridView的item设置的高度和宽度不起作用
  • [BT]BUUCTF刷题第8天(3.26)
  • [BZOJ] 2044: 三维导弹拦截
  • [C#]无法获取源 https://api.nuge t.org/v3-index存储签名信息解决方法