国产xxxx99真实实拍_久久不雅视频_高清韩国a级特黄毛片_嗯老师别我我受不了了小说

資訊專欄INFORMATION COLUMN

【jOOQ中文】1. 七個步驟快速入門

sihai / 2391人閱讀

摘要:關于是一個基于編寫的工具包,具有簡單輕量函數式編程寫等獨特優勢,非常適合敏捷快速迭代開發。三代碼生成在這一步中,我們將使用的命令行工具生成映射到表的類。注意不會主動關閉連接,需要我們手動關閉。

關于jOOQ

jOOQ: The easiest way to write SQL in Java

jOOQ是一個基于Java編寫SQL的工具包,具有:簡單、輕量、函數式編程寫SQL等獨特優勢,非常適合敏捷快速迭代開發。

初見jOOQ

使用jOOQ,SQL看起來好像是由Java原生支持的,保留SQL原有的簡單。

SQL語句:

SELECT AUTHOR.FIRST_NAME, AUTHOR.LAST_NAME, COUNT(*)
    FROM AUTHOR
    JOIN BOOK ON AUTHOR.ID = BOOK.AUTHOR_ID
   WHERE BOOK.LANGUAGE = "DE"
     AND BOOK.PUBLISHED > DATE "2008-01-01"
GROUP BY AUTHOR.FIRST_NAME, AUTHOR.LAST_NAME
  HAVING COUNT(*) > 5
ORDER BY AUTHOR.LAST_NAME ASC NULLS FIRST
   LIMIT 2
  OFFSET 1

Java代碼:

create.select(AUTHOR.FIRST_NAME, AUTHOR.LAST_NAME, count())
      .from(AUTHOR)
      .join(BOOK).on(AUTHOR.ID.equal(BOOK.AUTHOR_ID))
      .where(BOOK.LANGUAGE.eq("DE"))
      .and(BOOK.PUBLISHED.gt(date("2008-01-01")))
      .groupBy(AUTHOR.FIRST_NAME, AUTHOR.LAST_NAME)
      .having(count().gt(5))
      .orderBy(AUTHOR.LAST_NAME.asc().nullsFirst())
      .limit(2)
      .offset(1)
一、準備

如果還沒有下載,請下載jOOQ:
http://www.jooq.org/download
或者,可是使用Maven:


  org.jooq
  jooq
  3.9.5


  org.jooq
  jooq-meta
  3.9.5


  org.jooq
  jooq-codegen
  3.9.5
二、創建數據庫

我們要創建一個名為library的數據庫,和一個author表,在表中插入zhang3,li4數據。

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`)
);

INSERT INTO `author` (`id`, `first_name`, `last_name`) VALUES ("1", "3", "zhang"), ("2", "4", "li");
三、代碼生成

在這一步中,我們將使用jOOQ的命令行工具生成映射到author表的Java類。
有關jOOQ代碼生成器的更詳細信息,請參見:
jOOQ manual pages about setting up the code generator
代碼生成的最簡單的方法是將jOOQ的3個jar文件和MySQL Connector jar文件復制到一個臨時目錄(本示例中目錄是test-generated), 然后創建一個如下所示的library.xml(名字隨意修改)



  
  
    com.mysql.jdbc.Driver
    
    jdbc:mysql://localhost:3306/library?useUnicode=true&characterEncoding=UTF-8
    
    root
    
    123456
  

  
    
    org.jooq.util.JavaGenerator

    
      
      org.jooq.util.mysql.MySQLDatabase

      
      library

      
      .*

      
      
    

    
      
      
      test.generated

      
      
      C:/workspace/jOOQ-User-Manual/jooq-tutorials-1/src/main/java
    
  

在Windows中,cdtest-generated目錄,執行以下命令:

注意jar包的版本號與您本地對應上,在這個例子中,jOOQ使用3.9.5,MySQL使用5.1.30。

java -classpath jooq-3.9.5.jar;jooq-meta-3.9.5.jar;jooq-codegen-3.9.5.jar;mysql-connector-java-5.1.30.jar; org.jooq.util.GenerationTool library.xml

UNIX / Linux / Mac中:

java -classpath jooq-3.9.5.jar:jooq-meta-3.9.5.jar:jooq-codegen-3.9.5.jar:mysql-connector-java-5.1.30.jar: org.jooq.util.GenerationTool library.xml

如果一切正常,您應該在控制臺輸出中看到這些信息:

七月 30, 2017 1:12:51 下午 org.jooq.tools.JooqLogger info
信息: Initialising properties  : library.xml
七月 30, 2017 1:12:51 下午 org.jooq.tools.JooqLogger info
信息: No  was provided. Generating ALL available catalogs instead.
七月 30, 2017 1:12:51 下午 org.jooq.tools.JooqLogger info
信息: License parameters
七月 30, 2017 1:12:51 下午 org.jooq.tools.JooqLogger info
信息: ----------------------------------------------------------
七月 30, 2017 1:12:51 下午 org.jooq.tools.JooqLogger info
信息:   Thank you for using jOOQ and jOOQ"s code generator
七月 30, 2017 1:12:51 下午 org.jooq.tools.JooqLogger info
信息:
七月 30, 2017 1:12:51 下午 org.jooq.tools.JooqLogger info
信息: Database parameters
七月 30, 2017 1:12:51 下午 org.jooq.tools.JooqLogger info
信息: ----------------------------------------------------------
七月 30, 2017 1:12:52 下午 org.jooq.tools.JooqLogger info
信息:   dialect                : MYSQL
七月 30, 2017 1:12:52 下午 org.jooq.tools.JooqLogger info
信息:   URL                    : jdbc:mysql://localhost:3306/library?useUnicode=true&characterEncoding=UTF-8
七月 30, 2017 1:12:52 下午 org.jooq.tools.JooqLogger info
信息:   target dir             : C:/workspace/jOOQ-User-Manual/jooq-tutorials-1/src/main/java
七月 30, 2017 1:12:52 下午 org.jooq.tools.JooqLogger info
信息:   target package         : test.generated
七月 30, 2017 1:12:52 下午 org.jooq.tools.JooqLogger info
信息:   includes               : [.*]
七月 30, 2017 1:12:52 下午 org.jooq.tools.JooqLogger info
信息:   excludes               : []
七月 30, 2017 1:12:52 下午 org.jooq.tools.JooqLogger info
信息:   includeExcludeColumns  : false
七月 30, 2017 1:12:52 下午 org.jooq.tools.JooqLogger info
信息: ----------------------------------------------------------
七月 30, 2017 1:12:52 下午 org.jooq.tools.JooqLogger info
信息:
七月 30, 2017 1:12:52 下午 org.jooq.tools.JooqLogger info
信息: JavaGenerator parameters
七月 30, 2017 1:12:52 下午 org.jooq.tools.JooqLogger info
信息: ----------------------------------------------------------
七月 30, 2017 1:12:52 下午 org.jooq.tools.JooqLogger info
信息:   strategy               : class org.jooq.util.DefaultGeneratorStrategy
七月 30, 2017 1:12:52 下午 org.jooq.tools.JooqLogger info
信息:   deprecated             : true
七月 30, 2017 1:12:52 下午 org.jooq.tools.JooqLogger info
信息:   generated annotation   : true
七月 30, 2017 1:12:52 下午 org.jooq.tools.JooqLogger info
信息:   JPA annotations        : false
七月 30, 2017 1:12:52 下午 org.jooq.tools.JooqLogger info
信息:   validation annotations : false
七月 30, 2017 1:12:52 下午 org.jooq.tools.JooqLogger info
信息:   instance fields        : true
七月 30, 2017 1:12:52 下午 org.jooq.tools.JooqLogger info
信息:   sequences              : true
七月 30, 2017 1:12:52 下午 org.jooq.tools.JooqLogger info
信息:   udts                   : true
七月 30, 2017 1:12:52 下午 org.jooq.tools.JooqLogger info
信息:   routines               : true
七月 30, 2017 1:12:52 下午 org.jooq.tools.JooqLogger info
信息:   tables                 : true
七月 30, 2017 1:12:52 下午 org.jooq.tools.JooqLogger info
信息:   records                : true
七月 30, 2017 1:12:52 下午 org.jooq.tools.JooqLogger info
信息:   pojos                  : false
七月 30, 2017 1:12:52 下午 org.jooq.tools.JooqLogger info
信息:   immutable pojos        : false
七月 30, 2017 1:12:52 下午 org.jooq.tools.JooqLogger info
信息:   interfaces             : false
七月 30, 2017 1:12:52 下午 org.jooq.tools.JooqLogger info
信息:   immutable interfaces   : false
七月 30, 2017 1:12:52 下午 org.jooq.tools.JooqLogger info
信息:   daos                   : false
七月 30, 2017 1:12:52 下午 org.jooq.tools.JooqLogger info
信息:   relations              : true
七月 30, 2017 1:12:52 下午 org.jooq.tools.JooqLogger info
信息:   table-valued functions : true
七月 30, 2017 1:12:52 下午 org.jooq.tools.JooqLogger info
信息:   global references      : true
七月 30, 2017 1:12:52 下午 org.jooq.tools.JooqLogger info
信息: ----------------------------------------------------------
七月 30, 2017 1:12:52 下午 org.jooq.tools.JooqLogger info
信息:
七月 30, 2017 1:12:52 下午 org.jooq.tools.JooqLogger info
信息: Generation remarks
七月 30, 2017 1:12:52 下午 org.jooq.tools.JooqLogger info
信息: ----------------------------------------------------------
七月 30, 2017 1:12:52 下午 org.jooq.tools.JooqLogger info
信息:
七月 30, 2017 1:12:52 下午 org.jooq.tools.JooqLogger info
信息: ----------------------------------------------------------
七月 30, 2017 1:12:52 下午 org.jooq.tools.JooqLogger info
信息: Generating catalogs      : Total: 1
七月 30, 2017 1:12:52 下午 org.jooq.tools.JooqLogger info
信息:

@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
@@@@@@@@@@@@@@@@  @@        @@@@@@@@@@
@@@@@@@@@@@@@@@@@@@@        @@@@@@@@@@
@@@@@@@@@@@@@@@@  @@  @@    @@@@@@@@@@
@@@@@@@@@@  @@@@  @@  @@    @@@@@@@@@@
@@@@@@@@@@        @@        @@@@@@@@@@
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
@@@@@@@@@@        @@        @@@@@@@@@@
@@@@@@@@@@    @@  @@  @@@@  @@@@@@@@@@
@@@@@@@@@@    @@  @@  @@@@  @@@@@@@@@@
@@@@@@@@@@        @@  @  @  @@@@@@@@@@
@@@@@@@@@@        @@        @@@@@@@@@@
@@@@@@@@@@@@@@@@@@@@@@@  @@@@@@@@@@@@@
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@  Thank you for using jOOQ 3.9.5

七月 30, 2017 1:12:52 下午 org.jooq.tools.JooqLogger info
信息: ARRAYs fetched           : 0 (0 included, 0 excluded)
七月 30, 2017 1:12:52 下午 org.jooq.tools.JooqLogger info
信息: Enums fetched            : 0 (0 included, 0 excluded)
七月 30, 2017 1:12:52 下午 org.jooq.tools.JooqLogger info
信息: Packages fetched         : 0 (0 included, 0 excluded)
七月 30, 2017 1:12:52 下午 org.jooq.tools.JooqLogger info
信息: Routines fetched         : 0 (0 included, 0 excluded)
七月 30, 2017 1:12:52 下午 org.jooq.tools.JooqLogger info
信息: Tables fetched           : 1 (1 included, 0 excluded)
七月 30, 2017 1:12:52 下午 org.jooq.tools.JooqLogger info
信息: No schema version is applied for catalog . Regenerating.
七月 30, 2017 1:12:52 下午 org.jooq.tools.JooqLogger info
信息:
七月 30, 2017 1:12:52 下午 org.jooq.tools.JooqLogger info
信息: Generating catalog       : DefaultCatalog.java
七月 30, 2017 1:12:52 下午 org.jooq.tools.JooqLogger info
信息: ==========================================================
七月 30, 2017 1:12:52 下午 org.jooq.tools.JooqLogger info
信息: Generating schemata      : Total: 1
七月 30, 2017 1:12:52 下午 org.jooq.tools.JooqLogger info
信息: No schema version is applied for schema library. Regenerating.
七月 30, 2017 1:12:52 下午 org.jooq.tools.JooqLogger info
信息: Generating schema        : Library.java
七月 30, 2017 1:12:52 下午 org.jooq.tools.JooqLogger info
信息: ----------------------------------------------------------
七月 30, 2017 1:12:52 下午 org.jooq.tools.JooqLogger info
信息: Sequences fetched        : 0 (0 included, 0 excluded)
七月 30, 2017 1:12:52 下午 org.jooq.tools.JooqLogger info
信息: UDTs fetched             : 0 (0 included, 0 excluded)
七月 30, 2017 1:12:52 下午 org.jooq.tools.JooqLogger info
信息: Generating tables
七月 30, 2017 1:12:52 下午 org.jooq.tools.JooqLogger info
信息: Synthetic primary keys   : 0 (0 included, 0 excluded)
七月 30, 2017 1:12:52 下午 org.jooq.tools.JooqLogger info
信息: Overriding primary keys  : 1 (0 included, 1 excluded)
七月 30, 2017 1:12:52 下午 org.jooq.tools.JooqLogger info
信息: Generating table         : Author.java [input=author, output=author, pk=KEY_author_PRIMARY]
七月 30, 2017 1:12:52 下午 org.jooq.tools.JooqLogger info
信息: Tables generated         : Total: 819.168ms
七月 30, 2017 1:12:52 下午 org.jooq.tools.JooqLogger info
信息: Generating table references
七月 30, 2017 1:12:52 下午 org.jooq.tools.JooqLogger info
信息: Table refs generated     : Total: 827.491ms, +8.323ms
七月 30, 2017 1:12:52 下午 org.jooq.tools.JooqLogger info
信息: Generating Keys
七月 30, 2017 1:12:52 下午 org.jooq.tools.JooqLogger info
信息: Keys generated           : Total: 835.486ms, +7.995ms
七月 30, 2017 1:12:52 下午 org.jooq.tools.JooqLogger info
信息: Generating table records
七月 30, 2017 1:12:52 下午 org.jooq.tools.JooqLogger info
信息: Generating record        : AuthorRecord.java
七月 30, 2017 1:12:52 下午 org.jooq.tools.JooqLogger info
信息: Table records generated  : Total: 854.667ms, +19.18ms
七月 30, 2017 1:12:52 下午 org.jooq.tools.JooqLogger info
信息: Domains fetched          : 0 (0 included, 0 excluded)
七月 30, 2017 1:12:52 下午 org.jooq.tools.JooqLogger info
信息: Generation finished: library: Total: 860.822ms, +6.155ms
七月 30, 2017 1:12:52 下午 org.jooq.tools.JooqLogger info
信息:
七月 30, 2017 1:12:52 下午 org.jooq.tools.JooqLogger info
信息: Removing excess files
四、連接到您的數據庫

我們在工程中編寫一個測試類Main.java

package test.generated;

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

/**
 * 測試類
 * Created by jan on 2017/7/30.
 */
public class Main {
    public static void main(String[] args) {
        // 用戶名
        String userName = "root";
        // 密碼
        String password = "123456";
        // mysql連接url
        String url = "jdbc:mysql://localhost:3306/library?useUnicode=true&characterEncoding=UTF-8";

        // 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();
        }
    }
}

這是一個標準的JDBC MySQL連接代碼。

五、查詢

我們使用jOOQ的DSL構建出一個簡單查詢:

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

傳入Connection連接對象數據方言得到一個DSLContext的實例,然后使用DSL對象查詢得到一個Result對象。

注意:DSLContext不會主動關閉連接,需要我們手動關閉。

六、輸出結果

得到Result對象后,循環輸出結果集:

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);
}

完成的代碼應該是這樣的:

package test.generated;

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

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

import static test.generated.tables.Author.AUTHOR;

/**
 * 測試類
 * Created by jan on 2017/7/30.
 */
public class Main {
    public static void main(String[] args) {
        // 用戶名
        String userName = "root";
        // 密碼
        String password = "123456";
        // mysql連接url
        String url = "jdbc:mysql://localhost:3306/library?useUnicode=true&characterEncoding=UTF-8";

        // 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)) {
            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);

                /**
                 * 控制臺輸出
                 * ID: 1 first name: 3 last name: zhang
                 * ID: 2 first name: 4 last name: li
                 */
                System.out.println("ID: " + id + " first name: " + firstName + " last name: " + lastName);
            }

            // 關閉連接對象
            conn.close();
        }
        // For the sake of this tutorial, let"s keep exception handling simple
        catch (Exception e) {
            e.printStackTrace();
        }
    }
}

七、更多示例

jOOQ已經是一個全面的SQL庫,更多學習文檔請參考:

http://www.jooq.org/learn

http://www.jooq.org/javadoc/l...

http://ikaisays.com/2011/11/0...

【jOOQ中文】教程代碼都會放在碼云,希望多多宣傳給Star(^_?)☆。

https://gitee.com/xujian_jaso...

文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。

轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/67526.html

相關文章

  • jOOQ中文】3. 數據庫版本管理工具Flyway

    摘要:一簡介什么是是獨立于數據庫的應用管理跟蹤數據庫變更的數據庫版本管理工具。當升級完成時,數據庫表結構及數據應當與升級后的產品版本保持一致。 在執行數據庫遷移時,我們推薦使用jOOQ與Flyway - 數據庫遷移輕松。 在本章中,我們將簡單的來使用這兩個框架。 一、Flyway簡介 showImg(https://segmentfault.com/img/bVSjro?w=400&h=31...

    AprilJ 評論0 收藏0
  • jOOQ中文】2. jOOQ與Spring和Druid整合

    摘要:在這個例子中,我們將整合但您也可以使用其他連接池,如,,等。作為構建和執行。 jOOQ和Spring很容易整合。 在這個例子中,我們將整合: Alibaba Druid(但您也可以使用其他連接池,如BoneCP,C3P0,DBCP等)。 Spring TX作為事物管理library。 jOOQ作為SQL構建和執行library。 一、準備數據庫 DROP TABLE IF EXIS...

    pingink 評論0 收藏0
  • ORM “殺器”之 JOOQ

    摘要:摘要介紹簡單實用,以及相對于傳統框架的不同點。最令人滿意的就是在實際使用過程中解決問題的靈活性。當前在數據服務組擔任開發工程師,主要負責服務器開發。 摘要 介紹JOOQ簡單實用,以及相對于傳統ORM框架的不同點。 showImg(https://segmentfault.com/img/remote/1460000006763840); (圖片來自http://www.jooq.org...

    Andrman 評論0 收藏0
  • ORM “殺器”之 JOOQ

    摘要:摘要介紹簡單實用,以及相對于傳統框架的不同點。最令人滿意的就是在實際使用過程中解決問題的靈活性。當前在數據服務組擔任開發工程師,主要負責服務器開發。 摘要 介紹JOOQ簡單實用,以及相對于傳統ORM框架的不同點。 showImg(https://segmentfault.com/img/remote/1460000006763840); (圖片來自http://www.jooq.org...

    elarity 評論0 收藏0

發表評論

0條評論

sihai

|高級講師

TA的文章

閱讀更多
最新活動
閱讀需要支付1元查看
<