JOOQ快速手册--简单7步骤

本文,由本人根据JOOQ手册JOOQ in 7 easy steps翻译而成。

Step 1: 准备(Preparation)

如果还没有下载JOOQ,请先下载:
http://www.jooq.org/download
或者,可以创建一个Maven依赖项来下载jOOQ :

开源版 Open Source Edition

  
    org.jooq
    jooq 
    3.11.4 
 
 
    org.jooq 
    jooq-meta
    3.11.4

  
    org.jooq
    jooq-codegen
    3.11.4 
  

商业版 Commercial Editions(Java 8+)


    org.jooq.pro
    jooq
    3.11.4 
 
 
    org.jooq.pro 
    jooq-meta
    3.11.4 
 
 
    org.jooq.pro
    jooq-codegen 
    3.11.4

商业版 Commercial Editions (Java 6+)

  
    org.jooq.pro-java-6  
    jooq  
    3.11.4 
  
  
    org.jooq.pro-java-6  
    jooq-meta  
    3.11.4  
  
  
    org.jooq.pro-java-6  
    jooq-codegen  
    3.11.4  

商业版 (试用)Commercial Editions (Free Trial)


    org.jooq.trial
    jooq
    3.11.4 
 
 
    org.jooq.trial 
    jooq-meta
    3.11.4 

 
    org.jooq.trial
    jooq-codegen
    3.11.4 

注意,只有jOOQ开放源码版本可以从Maven Central获得。如果您使用的是jOOQ专业版或jOOQ企业版,则必须在本地Nexus或本地Maven缓存中手动安装jOOQ。有关更多信息,请参阅授权许可页面。

请参阅手册中有关代码生成配置的部分,以了解如何在Maven中使用jOOQ的代码生成器。

对于本例,我们将使用MySQL。如果你还没有下载MySQL Connector/J,请在这里下载:
http://dev.mysql.com/downloads/connector/j/

Step 2: 你的数据库(Your database)

我们将创建一个名为“library”的数据库和一个相应的“author”表。通过命令行客户端连接到MySQL,输入以下命令:

CREATE DATABASE `library`;

USE `library`;

CREATE TABLE `author` ( 
    `id` int NOT NULL, 
    `first_name` varchar(255) DEFAULT NULL, 
    `last_name` varchar(255) DEFAULT NULL, 
    PRIMARY KEY (`id`) 
);

Step 3: 代码生成 (Code generation)

在这一步中,我们将使用jOOQ的命令行工具来生成映射到我们刚刚创建的Author表的类。更多关于如何设置jOOQ代码生成器的详细信息可以在第6章里找到。
生成schema的最简单方法是将jOOQ jar文件(应该有3个)和MySQL Connector jar文件复制到一个临时目录。然后,创建一个库。如下所示的xml:



    
    
        com.mysql.jdbc.Driver
        jdbc:mysql://localhost:3306/library
        root
        
    
    
         
       org.jooq.codegen.JavaGenerator
       
       
         
            org.jooq.meta.mysql.MySQLDatabase

             
            library

             
            .*

             
             
        

        
             
            test.generated

             
            C:/workspace/MySQLTest/src/main/java
        
    

用任何具有查询数据库元数据的适当特权的用户替换user。您还需要查看其他值并根据需要进行替换。
以下是两个有趣的特性:

  • generator.target.package - 将此设置为要为生成的类创建的父包。 此处的test.generated包,将用来保存生成的test.generated.Author和test.generated.AuthorRecord两个类.
  • generator.target.directory - 输出到的目录
    一旦您拥有了JAR文件和library.xml在temp目录中,在Windows计算机上键入这个:
java -classpath jooq-3.11.4.jar:jooq-meta-3.11.4.jar:jooq-codegen-3.11.4.jar:mysql-connector-java-5.1.18-bin.jar:. org.jooq.codegen.GenerationTool library.xml

注意:jOOQ将尝试从你的classpath中加载library.xml。这也是为什么classpath尾部有一个点符号(.)的原因。如果在classpath中找不到这个文件,jOOQ将从当前工作目录文件系统进行检索。
用真实的文件名替换文件名。在本例中,使用的是jOOQ 3.11.4。如果一切正常,您应该在控制台输出中看到:

Nov 1, 2011 7:25:06 PM org.jooq.impl.JooqLogger info 
INFO: Initialising properties : /library.xml 
Nov 1, 2011 7:25:07 PM org.jooq.impl.JooqLogger info 
INFO: Database parameters 
Nov 1, 2011 7:25:07 PM org.jooq.impl.JooqLogger info 
INFO: ----------------------------------------------------------
Nov 1, 2011 7:25:07 PM org.jooq.impl.JooqLogger info 
INFO: dialect : MYSQL 
Nov 1, 2011 7:25:07 PM org.jooq.impl.JooqLogger info 
INFO: schema : library 
Nov 1, 2011 7:25:07 PM org.jooq.impl.JooqLogger info 
INFO: target dir : C:/workspace/MySQLTest/src 
Nov 1, 2011 7:25:07 PM org.jooq.impl.JooqLogger info 
INFO: target package : test.generated 
Nov 1, 2011 7:25:07 PM org.jooq.impl.JooqLogger info 
INFO: ----------------------------------------------------------
Nov 1, 2011 7:25:07 PM org.jooq.impl.JooqLogger info 
INFO: Emptying : C:/workspace/MySQLTest/src/test/generated 
Nov 1, 2011 7:25:07 PM org.jooq.impl.JooqLogger info 
INFO: Generating classes in : C:/workspace/MySQLTest/src/test/generated 
Nov 1, 2011 7:25:07 PM org.jooq.impl.JooqLogger info 
INFO: Generating schema : Library.java 
Nov 1, 2011 7:25:07 PM org.jooq.impl.JooqLogger info 
INFO: Schema generated : Total: 122.18ms 
Nov 1, 2011 7:25:07 PM org.jooq.impl.JooqLogger info 
INFO: Sequences fetched : 0 (0 included, 0 excluded) 
Nov 1, 2011 7:25:07 PM org.jooq.impl.JooqLogger info 
INFO: Tables fetched : 5 (5 included, 0 excluded) 
Nov 1, 2011 7:25:07 PM org.jooq.impl.JooqLogger info 
INFO: Generating tables : C:/workspace/MySQLTest/src/test/generated/tables 
Nov 1, 2011 7:25:07 PM org.jooq.impl.JooqLogger info 
INFO: ARRAYs fetched : 0 (0 included, 0 excluded) 
Nov 1, 2011 7:25:07 PM org.jooq.impl.JooqLogger info 
INFO: Enums fetched : 0 (0 included, 0 excluded) 
Nov 1, 2011 7:25:07 PM org.jooq.impl.JooqLogger info 
INFO: UDTs fetched : 0 (0 included, 0 excluded) 
Nov 1, 2011 7:25:07 PM org.jooq.impl.JooqLogger info 
INFO: Generating table : Author.java 
Nov 1, 2011 7:25:07 PM org.jooq.impl.JooqLogger info 
INFO: Tables generated : Total: 680.464ms, +558.284ms 
Nov 1, 2011 7:25:07 PM org.jooq.impl.JooqLogger info 
INFO: Generating Keys : C:/workspace/MySQLTest/src/test/generated/tables 
Nov 1, 2011 7:25:08 PM org.jooq.impl.JooqLogger info 
INFO: Keys generated : Total: 718.621ms, +38.157ms 
Nov 1, 2011 7:25:08 PM org.jooq.impl.JooqLogger info 
INFO: Generating records : C:/workspace/MySQLTest/src/test/generated/tables/records 
Nov 1, 2011 7:25:08 PM org.jooq.impl.JooqLogger info 
INFO: Generating record : AuthorRecord.java 
Nov 1, 2011 7:25:08 PM org.jooq.impl.JooqLogger info 
INFO: Table records generated : Total: 782.545ms, +63.924ms 
Nov 1, 2011 7:25:08 PM org.jooq.impl.JooqLogger info 
INFO: Routines fetched : 0 (0 included, 0 excluded) 
Nov 1, 2011 7:25:08 PM org.jooq.impl.JooqLogger info 
INFO: Packages fetched : 0 (0 included, 0 excluded) 
Nov 1, 2011 7:25:08 PM org.jooq.impl.JooqLogger info 
INFO: GENERATION FINISHED! : Total: 791.688ms, +9.143ms

在Mac操作系统上,基于jooq3.11.4,执行如下命令

bogon:temp goldfish$ java -classpath jooq-3.11.4.jar:jooq-meta-3.11.4.jar:jooq-codegen-3.11.4.jar:mysql-connector-java-5.1.46.jar:. org.jooq.codegen.GenerationTool library.xml

输出内容:

九月 12, 2018 2:03:57 下午 org.jooq.tools.JooqLogger info
信息: Initialising properties  : library.xml
九月 12, 2018 2:03:58 下午 org.jooq.tools.JooqLogger info
信息: No  was provided. Generating ALL available catalogs instead.
九月 12, 2018 2:03:58 下午 org.jooq.tools.JooqLogger info
信息: License parameters       
九月 12, 2018 2:03:58 下午 org.jooq.tools.JooqLogger info
信息: ----------------------------------------------------------
九月 12, 2018 2:03:58 下午 org.jooq.tools.JooqLogger info
信息:   Thank you for using jOOQ and jOOQ's code generator
九月 12, 2018 2:03:58 下午 org.jooq.tools.JooqLogger info
信息:                          
九月 12, 2018 2:03:58 下午 org.jooq.tools.JooqLogger info
信息: Database parameters      
九月 12, 2018 2:03:58 下午 org.jooq.tools.JooqLogger info
信息: ----------------------------------------------------------
九月 12, 2018 2:03:58 下午 org.jooq.tools.JooqLogger info
信息:   dialect                : MYSQL
九月 12, 2018 2:03:58 下午 org.jooq.tools.JooqLogger info
信息:   URL                    : jdbc:mysql://localhost:3306/library?characterEncoding=UTF-8&useSSL=false
九月 12, 2018 2:03:58 下午 org.jooq.tools.JooqLogger info
信息:   target dir             : /Users/goldfish/Downloads/temp
九月 12, 2018 2:03:58 下午 org.jooq.tools.JooqLogger info
信息:   target package         : test.generated
九月 12, 2018 2:03:58 下午 org.jooq.tools.JooqLogger info
信息:   includes               : [.*]
九月 12, 2018 2:03:58 下午 org.jooq.tools.JooqLogger info
信息:   excludes               : []
九月 12, 2018 2:03:58 下午 org.jooq.tools.JooqLogger info
信息:   includeExcludeColumns  : false
九月 12, 2018 2:03:58 下午 org.jooq.tools.JooqLogger info
信息: ----------------------------------------------------------
九月 12, 2018 2:03:58 下午 org.jooq.tools.JooqLogger info
信息:                          
九月 12, 2018 2:03:58 下午 org.jooq.tools.JooqLogger info
信息: JavaGenerator parameters 
九月 12, 2018 2:03:58 下午 org.jooq.tools.JooqLogger info
信息: ----------------------------------------------------------
九月 12, 2018 2:03:58 下午 org.jooq.tools.JooqLogger info
信息:   annotations (generated): true
九月 12, 2018 2:03:58 下午 org.jooq.tools.JooqLogger info
信息:   annotations (JPA: any) : false
九月 12, 2018 2:03:58 下午 org.jooq.tools.JooqLogger info
信息:   annotations (JPA: version): 
九月 12, 2018 2:03:58 下午 org.jooq.tools.JooqLogger info
信息:   annotations (validation): false
九月 12, 2018 2:03:58 下午 org.jooq.tools.JooqLogger info
信息:   comments               : true
九月 12, 2018 2:03:58 下午 org.jooq.tools.JooqLogger info
信息:   comments on attributes : true
九月 12, 2018 2:03:58 下午 org.jooq.tools.JooqLogger info
信息:   comments on catalogs   : true
九月 12, 2018 2:03:58 下午 org.jooq.tools.JooqLogger info
信息:   comments on columns    : true
九月 12, 2018 2:03:58 下午 org.jooq.tools.JooqLogger info
信息:   comments on keys       : true
九月 12, 2018 2:03:58 下午 org.jooq.tools.JooqLogger info
信息:   comments on links      : true
九月 12, 2018 2:03:58 下午 org.jooq.tools.JooqLogger info
信息:   comments on packages   : true
九月 12, 2018 2:03:58 下午 org.jooq.tools.JooqLogger info
信息:   comments on parameters : true
九月 12, 2018 2:03:58 下午 org.jooq.tools.JooqLogger info
信息:   comments on queues     : true
九月 12, 2018 2:03:58 下午 org.jooq.tools.JooqLogger info
信息:   comments on routines   : true
九月 12, 2018 2:03:58 下午 org.jooq.tools.JooqLogger info
信息:   comments on schemas    : true
九月 12, 2018 2:03:58 下午 org.jooq.tools.JooqLogger info
信息:   comments on sequences  : true
九月 12, 2018 2:03:58 下午 org.jooq.tools.JooqLogger info
信息:   comments on tables     : true
九月 12, 2018 2:03:58 下午 org.jooq.tools.JooqLogger info
信息:   comments on udts       : true
九月 12, 2018 2:03:58 下午 org.jooq.tools.JooqLogger info
信息:   daos                   : false
九月 12, 2018 2:03:58 下午 org.jooq.tools.JooqLogger info
信息:   deprecated code        : true
九月 12, 2018 2:03:58 下午 org.jooq.tools.JooqLogger info
信息:   global references (any): true
九月 12, 2018 2:03:58 下午 org.jooq.tools.JooqLogger info
信息:   global references (catalogs): true
九月 12, 2018 2:03:58 下午 org.jooq.tools.JooqLogger info
信息:   global references (keys): true
九月 12, 2018 2:03:58 下午 org.jooq.tools.JooqLogger info
信息:   global references (links): true
九月 12, 2018 2:03:58 下午 org.jooq.tools.JooqLogger info
信息:   global references (queues): true
九月 12, 2018 2:03:58 下午 org.jooq.tools.JooqLogger info
信息:   global references (routines): true
九月 12, 2018 2:03:58 下午 org.jooq.tools.JooqLogger info
信息:   global references (schemas): true
九月 12, 2018 2:03:58 下午 org.jooq.tools.JooqLogger info
信息:   global references (sequences): true
九月 12, 2018 2:03:58 下午 org.jooq.tools.JooqLogger info
信息:   global references (tables): true
九月 12, 2018 2:03:58 下午 org.jooq.tools.JooqLogger info
信息:   global references (udts): true
九月 12, 2018 2:03:58 下午 org.jooq.tools.JooqLogger info
信息:   indexes                : true
九月 12, 2018 2:03:58 下午 org.jooq.tools.JooqLogger info
信息:   instance fields        : true
九月 12, 2018 2:03:58 下午 org.jooq.tools.JooqLogger info
信息:   interfaces             : false
九月 12, 2018 2:03:58 下午 org.jooq.tools.JooqLogger info
信息:   interfaces (immutable) : false
九月 12, 2018 2:03:58 下午 org.jooq.tools.JooqLogger info
信息:   javadoc                : true
九月 12, 2018 2:03:58 下午 org.jooq.tools.JooqLogger info
信息:   keys                   : true
九月 12, 2018 2:03:58 下午 org.jooq.tools.JooqLogger info
信息:   links                  : true
九月 12, 2018 2:03:58 下午 org.jooq.tools.JooqLogger info
信息:   pojos                  : false
九月 12, 2018 2:03:58 下午 org.jooq.tools.JooqLogger info
信息:   pojos (immutable)      : false
九月 12, 2018 2:03:58 下午 org.jooq.tools.JooqLogger info
信息:   queues                 : true
九月 12, 2018 2:03:58 下午 org.jooq.tools.JooqLogger info
信息:   records                : true
九月 12, 2018 2:03:58 下午 org.jooq.tools.JooqLogger info
信息:   routines               : true
九月 12, 2018 2:03:58 下午 org.jooq.tools.JooqLogger info
信息:   sequences              : true
九月 12, 2018 2:03:58 下午 org.jooq.tools.JooqLogger info
信息:   table-valued functions : true
九月 12, 2018 2:03:58 下午 org.jooq.tools.JooqLogger info
信息:   tables                 : true
九月 12, 2018 2:03:58 下午 org.jooq.tools.JooqLogger info
信息:   udts                   : true
九月 12, 2018 2:03:58 下午 org.jooq.tools.JooqLogger info
信息:   relations              : true
九月 12, 2018 2:03:58 下午 org.jooq.tools.JooqLogger info
信息: ----------------------------------------------------------
九月 12, 2018 2:03:58 下午 org.jooq.tools.JooqLogger info
信息:                          
九月 12, 2018 2:03:58 下午 org.jooq.tools.JooqLogger info
信息: Generation remarks       
九月 12, 2018 2:03:58 下午 org.jooq.tools.JooqLogger info
信息: ----------------------------------------------------------
九月 12, 2018 2:03:58 下午 org.jooq.tools.JooqLogger info
信息:                          
九月 12, 2018 2:03:58 下午 org.jooq.tools.JooqLogger info
信息: ----------------------------------------------------------
九月 12, 2018 2:03:58 下午 org.jooq.tools.JooqLogger info
信息: Generating catalogs      : Total: 1
九月 12, 2018 2:03:58 下午 org.jooq.tools.JooqLogger info
信息: 
                                      
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
@@@@@@@@@@@@@@@@  @@        @@@@@@@@@@
@@@@@@@@@@@@@@@@@@@@        @@@@@@@@@@
@@@@@@@@@@@@@@@@  @@  @@    @@@@@@@@@@
@@@@@@@@@@  @@@@  @@  @@    @@@@@@@@@@
@@@@@@@@@@        @@        @@@@@@@@@@
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
@@@@@@@@@@        @@        @@@@@@@@@@
@@@@@@@@@@    @@  @@  @@@@  @@@@@@@@@@
@@@@@@@@@@    @@  @@  @@@@  @@@@@@@@@@
@@@@@@@@@@        @@  @  @  @@@@@@@@@@
@@@@@@@@@@        @@        @@@@@@@@@@
@@@@@@@@@@@@@@@@@@@@@@@  @@@@@@@@@@@@@
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@  Thank you for using jOOQ 3.11.4
                                      
九月 12, 2018 2:03:58 下午 org.jooq.tools.JooqLogger info
信息: ARRAYs fetched           : 0 (0 included, 0 excluded)
九月 12, 2018 2:03:58 下午 org.jooq.tools.JooqLogger info
信息: Enums fetched            : 0 (0 included, 0 excluded)
九月 12, 2018 2:03:58 下午 org.jooq.tools.JooqLogger info
信息: Packages fetched         : 0 (0 included, 0 excluded)
九月 12, 2018 2:03:58 下午 org.jooq.tools.JooqLogger info
信息: Routines fetched         : 0 (0 included, 0 excluded)
九月 12, 2018 2:03:58 下午 org.jooq.tools.JooqLogger info
信息: Tables fetched           : 1 (1 included, 0 excluded)
九月 12, 2018 2:03:58 下午 org.jooq.tools.JooqLogger info
信息: No schema version is applied for catalog . Regenerating.
九月 12, 2018 2:03:58 下午 org.jooq.tools.JooqLogger info
信息:                          
九月 12, 2018 2:03:58 下午 org.jooq.tools.JooqLogger info
信息: Generating catalog       : DefaultCatalog.java
九月 12, 2018 2:03:58 下午 org.jooq.tools.JooqLogger info
信息: ==========================================================
九月 12, 2018 2:03:58 下午 org.jooq.tools.JooqLogger info
信息: Generating schemata      : Total: 1
九月 12, 2018 2:03:58 下午 org.jooq.tools.JooqLogger info
信息: No schema version is applied for schema library. Regenerating.
九月 12, 2018 2:03:58 下午 org.jooq.tools.JooqLogger info
信息: Generating schema        : Library.java
九月 12, 2018 2:03:58 下午 org.jooq.tools.JooqLogger info
信息: ----------------------------------------------------------
九月 12, 2018 2:03:58 下午 org.jooq.tools.JooqLogger info
信息: Sequences fetched        : 0 (0 included, 0 excluded)
九月 12, 2018 2:03:58 下午 org.jooq.tools.JooqLogger info
信息: UDTs fetched             : 0 (0 included, 0 excluded)
九月 12, 2018 2:03:58 下午 org.jooq.tools.JooqLogger info
信息: Generating tables        
九月 12, 2018 2:03:58 下午 org.jooq.tools.JooqLogger info
信息: Synthetic primary keys   : 0 (0 included, 0 excluded)
九月 12, 2018 2:03:58 下午 org.jooq.tools.JooqLogger info
信息: Overriding primary keys  : 1 (0 included, 1 excluded)
九月 12, 2018 2:03:58 下午 org.jooq.tools.JooqLogger info
信息: Generating table         : Author.java [input=author, output=author, pk=KEY_author_PRIMARY]
九月 12, 2018 2:03:58 下午 org.jooq.tools.JooqLogger info
信息: Indexes fetched          : 1 (1 included, 0 excluded)
九月 12, 2018 2:03:58 下午 org.jooq.tools.JooqLogger info
信息: Tables generated         : Total: 659.457ms
九月 12, 2018 2:03:58 下午 org.jooq.tools.JooqLogger info
信息: Generating table references
九月 12, 2018 2:03:58 下午 org.jooq.tools.JooqLogger info
信息: Table refs generated     : Total: 661.061ms, +1.604ms
九月 12, 2018 2:03:58 下午 org.jooq.tools.JooqLogger info
信息: Generating Keys          
九月 12, 2018 2:03:58 下午 org.jooq.tools.JooqLogger info
信息: Keys generated           : Total: 663.21ms, +2.149ms
九月 12, 2018 2:03:58 下午 org.jooq.tools.JooqLogger info
信息: Generating Indexes       
九月 12, 2018 2:03:58 下午 org.jooq.tools.JooqLogger info
信息: Indexes generated        : Total: 665.02ms, +1.809ms
九月 12, 2018 2:03:58 下午 org.jooq.tools.JooqLogger info
信息: Generating table records 
九月 12, 2018 2:03:58 下午 org.jooq.tools.JooqLogger info
信息: Generating record        : AuthorRecord.java
九月 12, 2018 2:03:58 下午 org.jooq.tools.JooqLogger info
信息: Table records generated  : Total: 674.362ms, +9.342ms
九月 12, 2018 2:03:58 下午 org.jooq.tools.JooqLogger info
信息: Domains fetched          : 0 (0 included, 0 excluded)
九月 12, 2018 2:03:58 下午 org.jooq.tools.JooqLogger info
信息: Generation finished: library: Total: 674.759ms, +0.396ms
九月 12, 2018 2:03:58 下午 org.jooq.tools.JooqLogger info
信息:                          
九月 12, 2018 2:03:58 下午 org.jooq.tools.JooqLogger info
信息: Removing excess files    

Step 4: 连接数据库(Connect to your database)

让我们在项目中编写一个普通的main class,其中包含生成的classes:

// For convenience, always static import your generated tables and jOOQ functions to decrease verbosity: 
import static test.generated.Tables.*; 
import static org.jooq.impl.DSL.*;

import java.sql.*;

public class Main 
{

    public static void main(String[] args) 
    { 
        String userName = "root"; 
        String password = ""; 
        String url = "jdbc:mysql://localhost:3306/library";

        // Connection is the only JDBC resource that we need 
        // PreparedStatement and ResultSet are handled by jOOQ, internally 
        try (Connection conn = DriverManager.getConnection(url, userName, password)) 
        { 
            // ...

        }
        // For the sake of this tutorial, let's keep exception handling simple 
        catch (Exception e) 
        { 
            e.printStackTrace(); 
        }

    }

}

这是建立MySQL连接的标准代码。

Step 5 : 查询(Querying)

让我们添加一个用jOOQ的查询DSL构造的简单查询:

DSLContext create = DSL.using(conn, SQLDialect.MYSQL);  
Result result = create.select().from(AUTHOR).fetch();

首先获得DSLContext的一个实例,这样我们就可以编写一个简单的SELECT查询。我们将MySQL连接的实例传递给DSL。注意,DSLContext不会关闭连接。我们得自己做。

然后,我们使用jOOQ的查询DSL返回一个Result实例。我们将在下一步中使用这个结果。

Step 6 : 遍历(Iterating)

在查询出结果的行之后,让我们迭代结果并打印出数据:

for (Record r : result)
{

    Integer id = r.getValue(AUTHOR.ID);
    String firstName = r.getValue(AUTHOR.FIRST_NAME);
    String lastName = r.getValue(AUTHOR.LAST_NAME);

    System.out.println("ID: " + id + " first name: " + firstName + " last name: " + lastName);

}

完整的程序现在应该是这样的:

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;

import org.jooq.DSLContext;
import org.jooq.Record;
import org.jooq.Result;
import org.jooq.SQLDialect;
import org.jooq.impl.DSL;

import static test.generated.Tables.*;

public class Main
{

    public static void main(String[] args)
    {
        String userName = "root";
        String password = "123456";
        String url = "jdbc:mysql://localhost:3306/library?characterEncoding=UTF-8&useSSL=false";

        Connection conn = null;

        try
        {
            conn = DriverManager.getConnection(url, userName, password);

            // 使用JOOQ进行查询
            DSLContext create = DSL.using(conn, SQLDialect.MYSQL);
            Result result = create.select().from(AUTHOR).fetch();

            for (Record r : result)
            {

                Integer id = r.getValue(AUTHOR.ID);
                String firstName = r.getValue(AUTHOR.FIRST_NAME);
                String lastName = r.getValue(AUTHOR.LAST_NAME);

                System.out.println("ID: " + id + " first name: " + firstName + " last name: " + lastName);

            }
        }
        catch (SQLException e)
        {
            e.printStackTrace();
        }
        finally
        {
            if (conn != null)
            {
                try
                {
                    conn.close();
                }
                catch (SQLException e)
                {
                    e.printStackTrace();
                }
            }
        }
    }

}
注意:import static test.generated.Tables.*;  
如果没有静态引入,就需要通过Tables.AUTHOR进行使用。

Step 7: 探索(Explore!)

jOOQ已经发展成为一个全面的SQL库。更多信息,请考虑文件:
http://www.jooq.org/learn

... explore the Javadoc:
http://www.jooq.org/javadoc/latest/

... or join the news group:
https://groups.google.com/forum/#!forum/jooq-user

本教程由Ikai Lan提供。请参阅这里的原始源代码:
http://ikaisays.com/2011/11/01/getting-started-with-jooq-a-tutorial/

你可能感兴趣的:(JOOQ快速手册--简单7步骤)