是什么

  • 全称Java Object Oriented Querying,基于java开发出来的工具包,主要用于访问关系型数据库。

为什么用

  • Hibernate对SQL的操作太抽象
  • JDBC使用太过繁琐
  • JOOQ希望在上面两者中找到一个平衡。

基本过程

  • 准备数据库中的表以及数据
  • 使用JOOQ生成表结构代码文件
  • 将代码文件加载到项目中调用

怎么用

  • 在postgresql中准备数据

    • database 为 report
    • schema 为 site_issue
    • table 为 issue_detail
  1. CREATE TABLE site_issue.issue_detail
  2. (
  3. site_id integer,
  4. issue_key text COLLATE pg_catalog."default",
  5. alert_type text COLLATE pg_catalog."default",
  6. "alert_resolution " text COLLATE pg_catalog."default",
  7. "duration_start " date,
  8. "duration_end " date,
  9. org_id integer
  10. )
    • 插入表数据
  1. INSERT INTO site_issue.issue_detail(
  2. site_id, issue_key, alert_type, "alert_resolution ", "duration_start ", "duration_end ", org_id)
  3. VALUES (12,"23","error","asd",now(),now(),2323);
  • https://start.spring.io/定制并下载Maven工程

  • 从spring tool suite 加载report工程
  • 配置pom.xml
  1. <profiles>
  2. <profile>
  3. <id>postgresql</id>
  4. <build>
  5. <plugins>
  6. <plugin>
  7. <groupId>org.jooq</groupId>
  8. <artifactId>jooq-codegen-maven</artifactId>
  9. <executions>
  10. <execution>
  11. <goals>
  12. <goal>generate</goal>
  13. </goals>
  14. </execution>
  15. </executions>
  16. <dependencies>
  17. <dependency>
  18. <groupId>org.postgresql</groupId>
  19. <artifactId>postgresql</artifactId>
  20. <version>42.2.2</version>
  21. </dependency>
  22. </dependencies>
  23. <configuration>
  24. <jdbc>
  25. <driver>org.postgresql.Driver</driver>
  26. <url>jdbc:postgresql://localhost:5432/report</url>
  27. <user>postgres</user>
  28. <password>citrix</password>
  29. </jdbc>
  30. <generator>
  31. <name>org.jooq.util.DefaultGenerator</name>
  32. <database>
  33. <name>org.jooq.util.postgres.PostgresDatabase</name>
  34. <includes>.*</includes>
  35. <excludes />
  36. <inputSchema>site_issue</inputSchema>
  37. </database>
  38. <target>
  39. <packageName>com.citrix.nanjing.report.jooq</packageName>
  40. <directory>gensrc/main/java</directory>
  41. </target>
  42. </generator>
  43. </configuration>
  44. </plugin>
  45. </plugins>
  46. </build>
  47. </profile>
  48. </profiles>
  • 进入到代码根目录下执行 mvn clean install -P postgresql 执行完成之后你就可以看到gensrc/main/java 下面有对应的表结构代码 
  • 再配置pom.xml将代码加入到工程中
  1. <build>
  2. <plugins>
  3. <plugin>
  4. <groupId>org.springframework.boot</groupId>
  5. <artifactId>spring-boot-maven-plugin</artifactId>
  6. </plugin>
  7. <plugin>
  8. <groupId>org.codehaus.mojo</groupId>
  9. <artifactId>build-helper-maven-plugin</artifactId>
  10. <executions>
  11. <execution>
  12. <phase>generate-sources</phase>
  13. <goals>
  14. <goal>add-source</goal>
  15. </goals>
  16. <configuration>
  17. <sources>
  18. <source>gensrc/main/java</source>
  19. </sources>
  20. </configuration>
  21. </execution>
  22. </executions>
  23. </plugin>
  24. </plugins>
  25. </build>
  • 右键项目选择Maven–>update projects
  • 代码中调用表结构数据
  1. package priv.darrenqiao.nanjing.report.controller;
  2.  
  3. import java.sql.Connection;
  4. import java.sql.DriverManager;
  5.  
  6. import org.jooq.DSLContext;
  7. import org.jooq.Record;
  8. import org.jooq.Result;
  9. import org.jooq.SQLDialect;
  10. import org.jooq.impl.DSL;
  11. import org.springframework.web.bind.annotation.RequestMapping;
  12. import org.springframework.web.bind.annotation.RestController;
  13. import priv.darrenqiao.nanjing.report.jooq.tables.*;
  14.  
  15. @RestController
  16. @RequestMapping("/screport/")
  17. public class ReportController {
  18.  
  19. @RequestMapping("test")
  20. public String testdada() {
  21.  
  22.      //1. 指定 url 数据库用户名 密码
  23. String userName = "postgres";
  24. String password = "citrix";
  25. String url = "jdbc:postgresql://localhost:5432/report";
  26.  
  27. //2. 创建连接
  28. try (Connection conn = DriverManager.getConnection(url, userName, password)) {
  29. //3. 将连接和具体的数据库类型绑定
  30. DSLContext create = DSL.using(conn, SQLDialect.POSTGRES);
      
           //4. 执行查询
  31. Result<Record> result = create.select().from(IssueDetail.ISSUE_DETAIL).fetch();
  32. String re = null;
  33. for (Record r : result) {
  34. re = r.getValue(IssueDetail.ISSUE_DETAIL.ISSUE_KEY);
  35. }
  36. return re;
  37. }
  38.  
  39. // For the sake of this tutorial, let's keep exception handling simple
  40. catch (Exception e) {
  41. e.printStackTrace();
  42. }
  43. return "test";
  44. }
  45. }
  • 启动 访问 http://localhost:8080/screport/test 就能看到 23

问题记录

  • Failed to auto-configure a DataSource: 'spring.datasource.url' is not specified and no embedded datasource could be auto-configured.

    • 修改注解 为 @SpringBootApplication(exclude= {DataSourceAutoConfiguration.class})
  • Unable to load the mojo 'resources'
    • 右键菜单,Maven–>Update Projects.问题消失

JOOQ快速上手(基于springboot 和 postgresql)的更多相关文章

  1. 学习Keras:《Keras快速上手基于Python的深度学习实战》PDF代码+mobi

    有一定Python和TensorFlow基础的人看应该很容易,各领域的应用,但比较广泛,不深刻,讲硬件的部分可以作为入门人的参考. <Keras快速上手基于Python的深度学习实战>系统 ...

  2. 简明易懂,将细节隐藏,面向新手树立web开发概念——学完Java基础语法,超快速上手springboot+mybatiJavaWeb开发

    简明易懂,将细节隐藏,面向新手树立web开发概念 --学完Java基础语法,超快速上手JavaWeb开发 Web本质(先忽视各种协议) Web应用可以理解为浏览器和服务器之间的交互. 我们可以看一个简 ...

  3. WebFlux快速上手

    一.新建项目 示例使用IDEA快速创建基于SpringBoot的工程. springboot 2.3.1 java 8 WebFlux 必须选用Reactive的库 POM 依赖 <depend ...

  4. JeecgBoot 2.1.1 代码生成器AI版本发布,基于SpringBoot+AntDesign的JAVA快速开发平台

    此版本重点升级了 Online 代码生成器,支持更多的控件生成,所见即所得,极大的提高开发效率:同时做了数据库兼容专项工作,让 Online 开发兼容更多数据库:Mysql.SqlServer.Ora ...

  5. 在线Online表单来了!JeecgBoot 2.1 版本发布——基于SpringBoot+AntDesign的快速开发平台

    项目介绍 Jeecg-Boot 是一款基于SpringBoot+代码生成器的快速开发平台! 采用前后端分离架构:SpringBoot,Ant-Design-Vue,Mybatis,Shiro,JWT. ...

  6. NodeJS 基于 Dapr 构建云原生微服务应用,从 0 到 1 快速上手指南

    Dapr 是一个可移植的.事件驱动的运行时,它使任何开发人员能够轻松构建出弹性的.无状态和有状态的应用程序,并可运行在云平台或边缘计算中,它同时也支持多种编程语言和开发框架.Dapr 确保开发人员专注 ...

  7. SpringData 基于SpringBoot快速入门

    SpringData 基于SpringBoot快速入门 本章通过学习SpringData 和SpringBoot 相关知识将面向服务架构(SOA)的单点登录系统(SSO)需要的代码实现.这样可以从实战 ...

  8. fieldmeta 基于springboot的字段元数据管理,通用代码生成,快速开发引擎

    fieldmeta: 基于springboot的字段元数据管理 version:Alpha 0.0.1 ,码云地址:https://gitee.com/klguang/fieldmeta 元数据(Me ...

  9. 基于SpringBoot+AntDesign的快速开发平台,JeecgBoot 2.0.2 版本发布

    Jeecg-Boot 是一款基于SpringBoot+代码生成器的快速开发平台! 采用前后端分离架构:SpringBoot,Ant-Design-Vue,Mybatis,Shiro,JWT. 强大的代 ...

随机推荐

  1. linux 用户管理命令useradd、passwd、who、whoami、id、w及创建用户默认值文件

    useradd /usr/sbin/useradd执行权限:rootuseradd [选项] 用户名-u UID:手工指定用户的UID号-d 家目录:手工指定用户的家目录-c 用户说明:手工指定用户的 ...

  2. SpringBoot 之配置server 信息

    一.修改端口号 spring-boot 默认的端口号是8080,如需修改. 1.新建一个src/main/resources 文件夹 2.在这个文件夹下新建一个application.properti ...

  3. 数组转换list集合问题

    1问题的起因: 项目总要使用一个方法把数组转换成list集合,百度说有这个方法Arrays.asList可以实现 2结果报错 抛出java.lang.UnsupportedOperationExcep ...

  4. 结对作业——随机生成四则运算(Core 第7组)

    结对作业 ——随机生成四则运算(core第7组) 吕佳玲 PB16060145 涂涵越 PB16060282 GITHUB地址 https://github.com/hytu99/homework_2 ...

  5. Linux学习之CentOS(五)----网卡的配置

    [声明] 欢迎转载,但请保留文章原始出处→_→ 生命壹号:http://www.cnblogs.com/smyhvae/ 文章来源:http://www.cnblogs.com/smyhvae/p/3 ...

  6. 【转】数据分析与处理之二(Leveldb 实现原理)

    郑重声明:本篇博客是自己学习 Leveldb 实现原理时参考了郎格科技系列博客整理的,原文地址:http://www.samecity.com/blog/Index.asp?SortID=12,只是为 ...

  7. Oracle EBS 系统仅存在英文的环境

    系统管理员 应用服务器 adadmin 编译

  8. iOS开发中常用的数学函数

    iOS开发中常用的数学函数 /*---- 常用数学公式 ----*/ //指数运算 3^2 3^3 NSLog(,)); //result 9 NSLog(,)); //result 27 //开平方 ...

  9. [控件] 动态实时设置CAShapeLayer贝塞尔曲线的坐标点

    动态实时设置CAShapeLayer贝塞尔曲线的坐标点 效果图: 源码: PathDirectionView.h 与 PathDirectionView.m // // PathDirectionVi ...

  10. Python学习---xml文件的解析[beautifulsoup4模块学习]

    1.1. 安装beautifulsoup4 pip install beautifulsoup4 [更多参考]https://blog.csdn.net/sunhuaqiang1/article/de ...