jooq代码生成

我们可能在本教程的第一部分中还记得jOOQ指出

jOOQ从您的数据库生成Java代码,并允许您通过其流畅的API构建类型安全SQL查询。

本教程的第一部分描述了如何配置使用jOOQ的Spring驱动的应用程序的应用程序上下文,但没有描述如何使用jOOQ创建类型安全SQL查询。

这篇博客文章使我们更接近解决方案。 如果要使用jOOQ构建类型安全的数据库查询,则必须对数据库进行反向工程,并创建代表不同数据库表,记录等的类。 这些类是类型安全SQL查询的构建块。

幸运的是,jOOQ提供了一种自动执行此过程的简便方法 。 这篇博客文章描述了如何使用Maven生成所需的类。

让我们开始吧。

补充阅读:

  • 使用Maven创建配置文件特定的配置文件说明了如何使用Maven构建配置文件为不同的环境创建不同的配置。 通过使用此博客文章中描述的方法来配置此博客文章的示例应用程序。
  • 将jOOQ与Spring结合使用:配置是本教程的第一部分,它描述了您可以配置使用jOOQ的Spring应用程序的应用程序上下文。 您无需阅读本教程的第一部分就可以理解该博客文章,但是,如果您想在Spring支持的应用程序中真正使用jOOQ,建议您也阅读该博客文章。

用Maven生成代码

我们的构建过程分为三个重要阶段,如下所述:

  1. 从特定于配置文件的配置文件中读取数据库配置 。 我们希望为我们的应用程序和构建脚本使用相同的配置文件,因为这有助于我们避免重复。 更新数据库架构并从数据库生成代码时,需要数据库连接详细信息。
  2. 如果需要,更新数据库架构 。 因为我们要从数据库生成代码,所以我们必须确保在代码生成开始之前已更新其架构。
  3. 从数据库生成代码 。 此阶段从已配置的数据库中读取元数据,并创建用于使用jOOQ编写类型安全的数据库查询的类。

让我们继续前进,找出如何在pom.xml文件中配置这些阶段。

从配置文件特定的属性文件中读取属性

我们可以使用Properties Maven插件从特定于配置文件的属性文件中读取属性。 该插件读取属性文件的内容,并确保我们可以在pom.xml文件中使用其属性。

我们可以按照以下步骤配置此插件:

  1. 将插件声明添加到pom.xml文件的plugins部分。
  2. 创建一个在初始化 Maven生命周期阶段运行read-project-properties目标的执行。
  3. 确保从特定于配置文件的配置文件( profile / $ {build.profile.id} /config.properties )中读取属性。

Properties Maven插件的配置如下所示:

<plugin><groupId>org.codehaus.mojo</groupId><artifactId>properties-maven-plugin</artifactId><version>1.0-alpha-2</version><executions><execution><phase>initialize</phase><goals><goal>read-project-properties</goal></goals><configuration><files><file>profiles/${build.profile.id}/config.properties</file></files></configuration></execution></executions>
</plugin>

让我们继续前进,了解如何更新应用程序的数据库架构。

更新数据库架构

在我们可以从数据库生成任何代码之前,我们必须确保数据库的架构是最新的。 最简单的方法是使用SQL Maven插件 ,该插件可以执行从SQL文件中找到SQL语句。

在现实生活中的应用程序,你可能想使用两种迁飞或Liquibase用于这一目的。

让我们找出如何确保示例数据库始终是最新的。

首先 ,我们必须创建一个SQL文件,该文件将创建数据库模式。 如果从数据库中找不到该SQL脚本,它将创建todos表。

schema.sql文件如下所示:

CREATE TABLE IF NOT EXISTS todos (id BIGINT AUTO_INCREMENT PRIMARY KEY,creation_time TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,description VARCHAR(500),modification_time TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,title VARCHAR(100)
);

其次 ,我们必须在pom.xml文件的properties部分中添加一个skip.db.creation属性。 此属性用于启用和禁用架构更新。 因为我们要在所有配置文件中启用数据库模式更新,所以我们必须将此属性的值设置为false

我们的POM文件的相关部分如下所示:

<properties><skip.db.creation>false</skip.db.creation>
</properties>

第三 ,我们必须配置SQL Maven插件。 我们可以按照以下步骤进行操作:

  1. 将插件声明添加到pom.xml文件的plugins部分。
  2. 如果skip.db.creation属性的值为true,请确保跳过模式生成。
  3. 创建一个在生成源 Maven生命周期阶段运行执行目标的执行
  4. 通过执行以下步骤配置创建的执行:
    1. 配置JDBC驱动程序,数据库url,用户名和密码。
    2. 确保更改是自动提交的。
    3. 配置用于创建数据库架构SQL脚本的位置。
  5. 添加H2数据库作为此插件的依赖项。

SQL Maven插件的配置如下所示:

<plugin>
<groupId>org.codehaus.mojo</groupId><artifactId>sql-maven-plugin</artifactId><version>1.5</version><configuration><skip>${skip.db.creation}</skip></configuration><executions><execution><id>create-database-h2</id><phase>generate-sources</phase><goals><goal>execute</goal></goals><configuration><driver>${db.driver}</driver><url>${db.url}</url><username>${db.username}</username><password>${db.password}</password><autocommit>true</autocommit><srcFiles><srcFile>src/main/resources/schema.sql</srcFile></srcFiles></configuration></execution></executions><dependencies><dependency><groupId>com.h2database</groupId><artifactId>h2</artifactId><version>1.3.174</version></dependency></dependencies>
</plugin>

让我们继续前进,了解如何配置jOOQ-codegen Maven插件。

从数据库生成代码

我们的最后一个任务是配置jOOQ-codegen Maven插件。 让我们找出这是如何完成的。

首先 ,我们必须在pom.xml文件的properties部分中添加一个jooq.generator.db.dialect属性。 此属性指定正确的数据库方言,并且用于配置jOOQ-codegen Maven插件。 因为示例应用程序使用H2数据库,所以我们必须将此属性的值设置为org.jooq.util.h2.H2Database

将数据库方言指定为属性的原因是,这使我们可以在不同的环境中使用不同的数据库。

我们的POM文件的相关部分如下所示:

<properties><jooq.generator.db.dialect>org.jooq.util.h2.H2Database</jooq.generator.db.dialect>
</properties>

其次 ,我们必须配置jOOQ-codegen Maven插件。 我们可以按照以下步骤进行操作:

  1. 将插件声明添加到pom.xml文件的plugins部分。
  2. 创建一个在生成源 Maven生命周期阶段运行jOOQ-codegen Maven插件的生成目标的执行。
  3. 请按照以下步骤配置插件:
    1. 配置JDBC连接并设置驱动程序类的名称,数据库url,用户名和密码。 请记住,实际属性值是从特定于配置文件的配置文件中读取的。
    2. 通过执行以下步骤来配置用作源的数据库:
      1. 确保从jooq.generator.db.dialect属性中读取了使用的数据库方言。
      2. 配置代码生成以包括从PUBLIC模式中找到的所有表。
    3. 配置代码生成以生成数据库表和记录的类 。
    4. 配置目标软件包和目录。 以下描述了这些配置选项:
      • 目标软件包指定该软件包,它是所创建类的根软件包。
      • 目标目录指定生成类的目录。
  4. 添加H2数据库作为此插件的依赖项。

jOOQ-codegen Maven插件的配置如下所示:

<plugin><groupId>org.jooq</groupId><artifactId>jooq-codegen-maven</artifactId><version>3.2.2</version><executions><execution><id>generate-h2</id><phase>generate-sources</phase><goals><goal>generate</goal></goals></execution></executions><dependencies><dependency><groupId>com.h2database</groupId><artifactId>h2</artifactId><version>${h2.version}</version></dependency></dependencies><configuration><jdbc><driver>${db.driver}</driver><url>${db.url}</url><user>${db.username}</user><password>${db.password}</password></jdbc><generator><database><name>${jooq.generator.db.dialect}</name><includes>.*</includes><excludes></excludes><inputSchema>PUBLIC</inputSchema></database><generate><records>true</records></generate><target><packageName>net.petrikainulainen.spring.jooq.todo.db</packageName><directory>target/generated-sources/jooq</directory></target></generator></configuration>
</plugin>

您可以从jOOQ参考手册中获取有关代码生成的更多信息:

  • 第6章:代码生成
  • 第6.2节:高级生成器配置
  • 第6.3节:自定义生成器策略
  • 第6.7节:生成的表
  • 第6.8节:生成的记录

让我们找出运行代码生成时发生的情况。

产生了什么?

调用jOOQ-codegen Maven插件的生成目标时,它将分析数据库的架构并生成已配置目标目录和包的类。 在我们的情况下,这意味着:

  • 代码将生成到目录target / generation-sources / jooq
  • 生成的类的根包是net.petrikainulainen.spring.jooq.todo.db

我们在此博客文章中创建的配置可确保创建以下类:

  • 生成到net.petrikainulainen.spring.jooq.todo.db包的类包含数据库的元数据。 jOOQ将这些类称为“全局”工件 。
  • net.petrikainulainen.spring.jooq.todo.db.tables.Todos类是一个表类 ,它描述单个数据库表的结构。 我们可以使用此类针对存储在todos数据库表中的数据编写数据库查询。
  • net.petrikainulainen.spring.jooq.todo.db.tables.recods.TodoRecord类是一个记录类 ,其中包含单个表行的信息。 从todos数据库表中获取数据的数据库查询返回TodoRecord对象(如果我们选择这样做)。

摘要

现在,我们已经成功配置了jOOQ-codegen Maven插件,以从数据库中生成代码。 本教程教了我们两件事:

  • 我们了解了如何配置jOOQ-codegen Maven插件以从数据库生成代码。
  • 我们了解了开始生成代码时将创建什么样的类。

本教程的下一部分描述如何使用jOOQ生成的类将CRUD函数添加到简单的Web应用程序。

  • Github上提供了此博客文章的示例应用程序。

参考:在Petri Kainulainen博客上,我们的JCG合作伙伴 Petri Kainulainen 使用jOOQ和Spring:代码生成 。

翻译自: https://www.javacodegeeks.com/2014/02/using-jooq-with-spring-code-generation.html

jooq代码生成

jooq代码生成_将jOOQ与Spring结合使用:代码生成相关推荐

  1. jooq 事务_将jOOQ与Spring结合使用:排序和分页

    jooq 事务 JOOQ是一个库,可以帮助我们控制SQL. 它可以从我们的数据库生成代码,并允许我们使用其流畅的API来构建类型安全的数据库查询. 本教程前面的部分向我们介绍了如何配置应用程序的应用程 ...

  2. jooq 分页排序_将jOOQ与Spring结合使用:排序和分页

    jooq 分页排序 JOOQ是一个库,可以帮助我们控制SQL. 它可以从我们的数据库生成代码,并允许我们使用其流畅的API来构建类型安全的数据库查询. 本教程前面的部分向我们介绍了如何配置应用程序的应 ...

  3. jooq权限配置_将jOOQ与Spring结合使用:配置

    jooq权限配置 我遇到了由ORM引起的性能问题. 尽管我不得不承认大多数这些问题确实是由您造成的,但是我开始认为在只读操作中使用ORM是不值得的. 我开始寻找实现这些操作的替代方法. 这就是我遇到j ...

  4. 英飞凌代码生成_利用MATLAB-RTW的嵌入式代码自动生成与整合

    2018 收稿日期 :2018 - 01 - 02 收修改稿日期 :2018 - 02 - 01 基金项目 : 国家自然科学基金项目 (51405270) 资助 . 作者简介 : 陈 攀 , 男 ,1 ...

  5. 零基础速成simulink代码生成——结合CANOE的DBC文件CAN报文代码生成 移植到硬件4

    零基础速成simulink代码生成--结合CANOE的DBC文件CAN报文代码生成 移植到硬件4 本次我们将讲解如何将代码放到嵌入式硬件上运行,本次例子将dbc文件导入simulink中,生成代码,不 ...

  6. springboot中文文档_登顶 Github 的 Spring Boot 仓库!艿艿写的最肝系列

    源码精品专栏 中文详细注释的开源项目 RPC 框架 Dubbo 源码解析 网络应用框架 Netty 源码解析 消息中间件 RocketMQ 源码解析 数据库中间件 Sharding-JDBC 和 My ...

  7. idea运行jsp显示源码_基于jsp+mysql+Spring+mybatis的SSM在线个人PC电脑商城平台网站系统...

    运行环境: 最好是java jdk 1.8,我们在这个平台上运行的.其他版本理论上也可以.IDE环境: Eclipse,Myeclipse,IDEA都可以tomcat环境: Tomcat 7.x,8. ...

  8. springboot tomcat配置_告诉你,Spring Boot 真是个牛逼货!

    现在 Spring Boot 非常火,各种技术文章,各种付费教程,多如牛毛,可能还有些不知道 Spring Boot 的,那它到底是什么呢?有什么用?今天给大家详细介绍一下. Spring Boot ...

  9. springboot 读取配置文件_使用 @ConfigurationProperties 在 Spring Boot 中加载配置

    本文地址: 使用 @ConfigurationProperties 在 Spring Boot 中加载配置 使用 Spring Boot 加载配置文件的配置非常便利,我们只需要使用一些注解配置一下就能 ...

最新文章

  1. Web服务器 之 Apache 2.x 服务器中的URL重写的配置和应用
  2. iOS学习笔记2-微博cell界面的实现
  3. Kotlin------函数和代码注释
  4. ib课程计算机科学内容,ib课程体系的六大课程
  5. c 内嵌php 韩天峰,PHP-X系列教程之内置函数的使用示例
  6. golang插入字符串_golang 几种字符串的连接方式
  7. 选择结构_扩展if-else语句
  8. Linux 用户与用户组管理
  9. 心动网络:PolarDB助力心动网络打造爆款手游
  10. ECMAScript 函数--修改对象
  11. win10如何提高电脑画质_win10电脑怎么提高画质 | 手游网游页游攻略大全
  12. Git 修改已提交 commit 的信息
  13. 整型索引查询mysql是不是快点_图解Mysql索引的数据结构!看不懂你来找我
  14. MyBatis3——入门介绍
  15. vue3 使用echarts
  16. ExtJs6 为Ext.Img对象添加单机事件
  17. 高淇java什么方向,高淇Java笔记(数据类型和运算符、控制语句)
  18. 微信小程序名称、简称设置规范
  19. 越来越多的主板增加了WIFI功能,但是你真能用得到吗?
  20. KETTLE各个版本下载地址

热门文章

  1. 【dfs】【hash】有趣的英语角(2015特长生 T2/luogu 1019)
  2. 【启发式合并】梦幻布丁(金牌导航 启发式合并-1/luogu 3201)
  3. 奶牛的交叉路(jzoj 1756)
  4. DevOps之发布系统
  5. Spring MVC竟然有5种参数绑定的方式?你知道几种?
  6. JavaFX UI控件教程(二十四)之Password Field
  7. java使用htmlparser提取网页纯文本例子
  8. mvc.net分页查询案例——实体层(HouseModel.cs)
  9. 整合MyBatis---SpringBoot
  10. android之微信分享音频