快速试用jOOQ与Jbang!

jbang是一个相对较新的工具,...

...让学生、教育工作者和专业开发人员以前所未有的轻松方式创建、编辑和运行独立的纯源代码的Java程序。

听起来很令人兴奋。它是如何与jOOQ一起工作的?非常简单!像这样设置它(其他安装选项在此)。

curl -Ls https://sh.jbang.dev | bash -s - app setup

然后,玩一玩这个jOOQ的例子。

git clone https://github.com/jOOQ/jbang-example
cd jbang-example
jbang Example.java

你应该看到这样的东西。

[jbang] Resolving dependencies...
[jbang]     Resolving org.jooq:jooq:RELEASE...Done
[jbang]     Resolving com.h2database:h2:RELEASE...Done
[jbang] Dependencies resolved
[jbang] Building jar...
Picked up JAVA_TOOL_OPTIONS: -Dfile.encoding=UTF8
Picked up JAVA_TOOL_OPTIONS: -Dfile.encoding=UTF8
Juni 24, 2021 5:06:35 PM org.jooq.tools.JooqLogger info
INFO:

@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
@@@@@@@@@@@@@@@@  @@        @@@@@@@@@@
@@@@@@@@@@@@@@@@@@@@        @@@@@@@@@@
@@@@@@@@@@@@@@@@  @@  @@    @@@@@@@@@@
@@@@@@@@@@  @@@@  @@  @@    @@@@@@@@@@
@@@@@@@@@@        @@        @@@@@@@@@@
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
@@@@@@@@@@        @@        @@@@@@@@@@
@@@@@@@@@@    @@  @@  @@@@  @@@@@@@@@@
@@@@@@@@@@    @@  @@  @@@@  @@@@@@@@@@
@@@@@@@@@@        @@  @  @  @@@@@@@@@@
@@@@@@@@@@        @@        @@@@@@@@@@
@@@@@@@@@@@@@@@@@@@@@@@  @@@@@@@@@@@@@
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@  Thank you for using jOOQ 3.14.4

Query:
select
  "alias_99346637"."FIRST_NAME",
  "alias_99346637"."LAST_NAME",
  "alias_12744250"."TITLE",
  count(distinct "BOOK_TO_BOOK_STORE"."BOOK_ID") over (partition by "alias_12744250"."AUTHOR_ID") "books written by author",
  count(distinct "BOOK_TO_BOOK_STORE"."NAME") over (partition by "alias_12744250"."AUTHOR_ID") "bookstores listing author",
  "alias_86071072"."CD",
  "alias_134125752"."NAME"
from (
  "BOOK_TO_BOOK_STORE"
    join (
      "BOOK" "alias_12744250"
        join "AUTHOR" "alias_99346637"
          on "alias_12744250"."AUTHOR_ID" = "alias_99346637"."ID"
        join "LANGUAGE" "alias_86071072"
          on "alias_12744250"."LANGUAGE_ID" = "alias_86071072"."ID"
    )
      on "BOOK_TO_BOOK_STORE"."BOOK_ID" = "alias_12744250"."ID"
    join "BOOK_STORE" "alias_134125752"
      on "BOOK_TO_BOOK_STORE"."NAME" = "alias_134125752"."NAME"
  )
order by
  1,
  2,
  3

Result:
+----------+---------+------------+-----------------------+-------------------------+----+-------------------------+
|FIRST_NAME|LAST_NAME|TITLE       |books written by author|bookstores listing author|CD  |NAME                     |
+----------+---------+------------+-----------------------+-------------------------+----+-------------------------+
|George    |Orwell   |1984        |                      2|                        2|en  |Orell Füssli             |
|George    |Orwell   |1984        |                      2|                        2|en  |Ex Libris                |
|George    |Orwell   |Animal Farm |                      2|                        2|en  |Orell Füssli             |
|Paulo     |Coelho   |O Alquimista|                      1|                        3|pt  |Orell Füssli             |
|Paulo     |Coelho   |O Alquimista|                      1|                        3|pt  |Ex Libris                |
|Paulo     |Coelho   |O Alquimista|                      1|                        3|pt  |Buchhandlung im Volkshaus|
+----------+---------+------------+-----------------------+-------------------------+----+-------------------------+

没有Maven、Gradle或任何其他麻烦的参与。所有的依赖都是自动解决的,编译也已经完成。

要重新生成jOOQ生成的代码,如果你修改了代码生成配置,或者数据库模式发生变化,只需运行。

jbang codegen@jooq db.xml

你也可以在jOOQ中非常简单地使用其他两个CLI API,例如 [DiffCLI](https://www.jooq.org/doc/latest/manual/sql-building/schema-diff-cli/):

jbang diff@jooq -T MYSQL -1 "create table t (i int);" -2 "create table t (i int, j int);"

来获得这个输出。

alter table t add j int null;

或者,在 [ParserCLI](https://www.jooq.org/doc/latest/manual/sql-building/sql-parser/sql-parser-cli/)

jbang parser@jooq -T MYSQL -s "create table t (i int generated always as identity);"

你就会得到。

create table t (i int not null auto_increment);

想与商业发行版一起工作吗?假设你已经从这里下载了相应的试用版或专业版: https://www.jooq.org/download/versions

然后,只要从jbang-catalog(完整的、最新的目录可以在这里看到)向你的脚本添加通常的后缀即可

jbang parser-trial@jooq -T SQLSERVER -s "create table t (i int generated always as identity);"

而现在,你也可以访问商业方言来获得。

create table t (i int identity(1, 1) not null);

可用的后缀包括

  • -trial
  • -trial-java-8
  • -trial-java-11 (从jOOQ 3.15开始)
  • -pro
  • -pro-java-8
  • -pro-java-11 (从jOOQ 3.15开始)

更多的安装,请参考jbang文档。

猜你喜欢

转载自juejin.im/post/7126370529618952222