jooq简单使用
DSLContext首先简单的配置文件
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<configuration xmlns="http://www.jooq.org/xsd/jooq-codegen-3.14.0.xsd">
<!-- mysql8 连接-->
<jdbc>
<driver>com.mysql.jdbc.Driver</driver>
<url>jdbc:mysql://localhost:3306/test?useSSL=false&serverTimezone=UTC&allowPublicKeyRetrieval=true</url>
<user>用户名</user>
<password>密码</password>
</jdbc>
<generator>
<!-- 代码生成器 -->
<name>org.jooq.codegen.JavaGenerator</name>
<!-- <name>com.sun.utils.CustomJavaGenerator</name>-->
<database>
<!--include用于控制数据库中哪些表生成-->
<includes>people|year_date</includes>
<!--exclude用于控制数据库中哪些表不生成-->
<!--<excludes></excludes>-->
<!--数据库名称-->
<inputSchema>test</inputSchema>
<logSlowQueriesAfterSeconds>50</logSlowQueriesAfterSeconds>
</database>
<generate>
<interfaces>true</interfaces>
<!--是否生成dao和pojo-->
<daos>true</daos>
<pojos>true</pojos>
<!--是否把数据库时间类型映射到java 8时间类型-->
<javaTimeTypes>true</javaTimeTypes>
<!--<interfaces>true</interfaces>-->
<!--不在生成的代码中添加spring注释,比如@Repository-->
<springAnnotations>false</springAnnotations>
</generate>
<!--生成代码文件的包名及放置目录-->
<target>
<packageName>com.test.jooq</packageName>
<directory>/src/main/java</directory>
</target>
</generator>
</configuration>
找到一篇jooq多数据源配置的文章 七、jOOQ 系列教程 - 多数据源处理 - 知乎 (zhihu.com)
配置文件主要是为了自动生成pojo类dao类 , 中间封装了简单的操作方法

生成包说明
jooq会根据指定的数据表生成代码文件
- daos
- 封装了很多增删改查的方法,如果是简单的基本不用自己写
- interface
- 针对pojo对象的接口方法
- pojos
- 和数据表一一对应的pojo类,并重新了toString方法,提供了from封装方法和into复制字段方法
- records
- 封装数据库表的对象,并提供了很多和字段有关的方法,主要是内部进行数据表操作的时候的对象都是用的这个
- DefaultCatalog
- 默认数据库目录
- Keys
- 数据表的相关索引
- Tables
- 数据表
- Test
- 使用的数据库对象,并内部生成了对于的数据表
具体使用
基础增删改查
增
dsl.insertInto(表).columns(字段1,字段2,字段3).values(值1,值2,值3).execute();
删
dsl.delete(表).where(条件).execute();
改
dsl.update(表).set(字段, 值).where(条件).execute();
查
List<People> peopleList = dsl.select(字段).from(表).fetch().into(People.class);
首先看一下基础的增删改查的操作是怎么写的
总体结构对比书写sql语句其实是一模一样的,
insert into 表 (列) values 值;
delete from 表 where 条件;
update 表 set 列=值 where 条件;
select 字段 from 表 where 条件;
书写的结构完全一致 , 只是其中的关键字是使用方法调用出来的拼接而成,最后拼接执行方法 , 获取返回值.
新增的时候略有不同的地方是 , 查询之后要放入一个返回对象进行保存 , 这个对象的类型需要在语句中进行指定.
内置对象、表和字段
- DSLContext
数据库表操作类,不单单封装了增删改查方法,还有ddl操作,可以对数据库表结构进行操作
dsl.select();
dsl.update();
dsl.delete();
dsl.insertInto();
dsl.selectDistinct();
dsl.batch();
dsl.alterDatabase();
dsl.alterDomain();
dsl.alterIndex();
dsl.alterSequence();
dsl.alterTable();
dsl.alterType();
dsl.alterView();
- Tables
表和字段静态类,可以获取数据库表的名称和全部/单个字段.这样在书写的时候就不用写字符串了,全部可以从中提取使用
Tables."表名"."字段"."sql的条件语句"
Tables.PEOPLE.as();
Tables.PEOPLE.NAME.as();
Tables.PEOPLE.field();
Tables.PEOPLE.NAME.eq();
Tables.PEOPLE.NAME.ne();
Tables.PEOPLE.NAME.isNull();
- DSL
操作数据的函数和静态方法,对于一些需要聚合还有复杂函的操作,需要从DSL中寻找.
DSL.abs();
DSL.concat();
DSL.ifnull();
DSL.date();
DSL.dayOfWeek();
DSL.dayOfYear();
说的比较琐碎 , 还是需要自己实践一下 , 体会各处细节的操作技巧 , 使用起来还是非常像mybatis-plus的
国内的教程非常的少 , 可以参考官网的文档 The jOOQ User Manual.
官方文档说的非常细致了.
分析一下优缺点
- 优点
据说大神分析了运行速度高于其他ORM框架 , 具体自己并没有进行测试
能够将数据库表字段的名字提前初始化 , 方便每次使用的时候拼写错误导致的低级错误 , 而且在表结构变更之后 , ide会直接提示那些地方的字段变了报错 , 方便修改
只需要了解Java(开发语言)和sql就可以 , 不存在第三种需要学习的语音 , 降低一些学习成本 , 查查API基本就可以上手开发了
- 缺点
最大的一个问题是 , 没有分页组件 , 需要自己封装 , 虽然官方提供一些提示... 这一点让我非常诧异和费解 , 这么完善的ORM框架居然不提供分页 或者 分页相关的组件(也有可能是我刚刚接触 , 没有找到 , 哪位大神如果有提示求留言告知)
国内流行度太低 , 如果真的遇上难解的问题 , 恐怕不好找到解决方案(如果大神有类似的地方求推荐)
jooq简单使用的更多相关文章
- 10个简单步骤,完全理解SQL
此文章为转载 1. SQL 是一种声明式语言 首先要把这个概念记在脑中:“声明”. SQL 语言是为计算机声明了一个你想从原始数据中获得什么样的结果的一个范例,而不是告诉计算机如何能够得到结果.这是不 ...
- 简单十步让你全面理解SQL
很多程序员认为SQL是一头难以驯服的野兽.它是为数不多的声明性语言之一,也因为这样,其展示了完全不同于其他的表现形式.命令式语言. 面向对象语言甚至函数式编程语言(虽然有些人觉得SQL 还是有些类似功 ...
- 【转】简单十步让你全面理解SQL
简单十步让你全面理解SQL 很多程序员认为SQL是一头难以驯服的野兽.它是为数不多的声明性语言之一,也因为这样,其展示了完全不同于其他的表现形式.命令式语言. 面向对象语言甚至函数式编程语言(虽然有些 ...
- ORM “杀器”之 JOOQ
ORM “杀器”之 JOOQ IN 后端编程,JAVA,敏捷开发,数据库 JOOQ是啥? JOOQ 是基于Java访问关系型数据库的工具包,轻量,简单,并且足够灵活,可以轻松的使用Java面向对象语法 ...
- 微服务架构 - SpringBoot整合Jooq和Flyway
在一次学习分布式跟踪系统zipkin中,发现了jooq这个组件,当时不知这个组件是干嘛的,后来抽空学习了一下,感觉这个组件还挺用的.它主要有以下作用: 通过DSL(Domain Specific La ...
- 如何更简单方便地执行SQL操作?
现在公司使用mybatis作为DAL层的框架. 使用起来比较简单,使用xml进行SQL的书写,java代码使用接口执行. 但在写一些简单SQL的时候会显得非常繁琐: xml和java分离(设计上为了解 ...
- 第一篇:SpringBoot2.0简单介绍
距离Spring Boot1.0发布已经4年了,今年3月份SpringBoot2.0正式发布.让我们一起来了解一下它. Spring Boot主要依赖于Spring,整合了很多框架的使用方式,帮助开发 ...
- [jOOQ中文]3. 数据库版本管理工具Flyway
https://segmentfault.com/a/1190000010526452 在执行数据库迁移时,我们推荐使用jOOQ与Flyway - 数据库迁移轻松. 在本章中,我们将简单的来使用这两个 ...
- [jOOQ中文] 七个步骤快速入门
https://segmentfault.com/a/1190000010415384 关于jOOQ jOOQ: The easiest way to write SQL in Java jOOQ是一 ...
- 10种简单的Java性能优化
你是否正打算优化hashCode()方法?是否想要绕开正则表达式?Lukas Eder介绍了很多简单方便的性能优化小贴士以及扩展程序性能的技巧. 最近“全网域(Web Scale)”一词被炒得火热,人 ...
随机推荐
- Python用telnet设置,抓UDP抓采样点并显示
====main.bat==== echo off rem "d:\Program\WiresharkPortable64\App\Wireshark\tshark.exe" -- ...
- 域名证书https配置问题
目前默认通配证书只适配2级通配.例如配置2级域名的通配证书 https://a.baidu.com.如果想配置三级域名的https 需购买3级通配证书.这样才可以配置三级域名. https://a.b ...
- WebService 客户端上传图片,服务器端接收图片并保存到本地
需求:如题,C#本地要调用Webservice接口,上传本地的照片到服务器中: 参考:客户端: https://blog.csdn.net/tiegenZ/article/details/799276 ...
- drf从入门到飞升仙界 02
restful规范 # restful是一种定义web API接口的设计风格,适用于前后端分离的应用模式中 # 关于restful的10个规范 -1.数据的安全保障,通常使用https协议(http+ ...
- vue dialog弹窗
<el-dialog v-model="dialogFormVisible" :before-close="closeDialog" title=&quo ...
- MySQL索引 及 EXPLAIN
1.索引长度计算: 1.索引字段,没有设置NOT NULL,则需要加一个字节. 2.定长字段:tinyiny占1个字节.int占4个字节.bitint占8个字节.date占3个字节.datetime占 ...
- Android studio学习第一期
下载工具 Android studio 参考博客https://blog.csdn.net/weixin_45406151/article/details/114531103 汉化完成 并创建了虚拟手 ...
- Java集合-LinkedHashSet
LinkedHashSet 重点: LinkedHashSet 不允许重复元素,与 HashSet的区别是:它是有序的 LinkedHashSet 底层结构是 数组table + 双向链表 [介绍] ...
- Jmeter的简单配置和使用
对于测试大佬来说,最常见的压测工具莫过于Apache旗下的 JMeter . 那么测试大佬经常使用,对于我们后端开发者来说,也是属于必备的一个技能. 接下来咱们就一起简单的配置一下烫手的jmeter ...
- 1903021126 申文骏 Java 第二周作业 代码编写及运行
项目 内容 课程班级博客链接 19级信计班(本) 作业要求链接 Java第二周作业 博客名称 1903021126 申文骏 Java 第二周作业 代码编写及运行 要求 每道题要有题目,代码(使用插入代 ...