• 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&amp;serverTimezone=UTC&amp;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框架居然不提供分页 或者 分页相关的组件(也有可能是我刚刚接触 , 没有找到 , 哪位大神如果有提示求留言告知)

国内流行度太低 , 如果真的遇上难解的问题 , 恐怕不好找到解决方案(如果大神有类似的地方求推荐)

最新文章

  1. Maven遇到的错误汇总
  2. wpf 面试题目
  3. 【设计模式】装饰者模式(Decorator)
  4. ios 缓存策略
  5. handlebar helper帮助方法
  6. Longest Substring Without Repeating Characters 解答
  7. struts2中根对象以及ognl .
  8. iOS 蓝牙开发资料记录
  9. java8 :: 用法 (JDK8 双冒号用法)
  10. 【Flask-RESTPlus系列】Part1:快速入门
  11. Springboot 配置 ssl 实现HTTPS 请求 &amp; Tomcat配置SSL支持https请求
  12. 安卓开发----TextView控件属性列表(转)
  13. STM32 F103 F407 F429 F767对比图
  14. Mac获取公网ip
  15. es分页搜索
  16. linux计划任务防暴力破解脚本+免密操作
  17. Ruby学习笔记3:Rendering(渲染)和 Redirect(重定向)
  18. [JAVA] JAVA 文档注释
  19. CentOS6安装各种大数据软件 第六章:HBase分布式集群的配置
  20. ISP (互联网服务提供商)

热门文章

  1. linux安装EMQ
  2. span服务器控件
  3. 使用supervisor 管理 laravel 框架中的进程
  4. 【转载】ISTQB AL-TA/TTA连载系列06:白盒测试技术的精炼总结
  5. STM32-USART打印字符、字符串函数自己犯的错误反思
  6. Word02 领慧讲堂就业讲座office真题
  7. Datax初使用
  8. MongoDB 4.0 dump备份脚本
  9. Unity 热更新XLua
  10. kubernetes 部署 flannel 网络插件