jooq 事务_在Spring中使用jOOQ:CRUD

jooq 事务

jooq 事务

jOOQ是一个库,可帮助我们重新控制SQL。 它可以从我们的数据库生成代码,并允许我们使用其流畅的API来构建类型安全的数据库查询。

本教程的前面部分教我们如何配置示例应用程序的应用程序上下文以及如何从数据库中生成代码。

现在,我们准备迈出第一步,学习如何使用jOOQ创建类型安全查询。 这篇博客文章描述了如何将CRUD操作添加到管理待办事项的简单应用程序中。

让我们开始吧。

补充阅读:
  • 将jOOQ与Spring结合使用:配置是本教程的第一部分,它描述了您可以配置使用jOOQ的Spring应用程序的应用程序上下文。 您无需阅读本教程的第一部分就可以了解此博客文章,但是,如果您想在基于Spring的应用程序中真正使用jOOQ,建议您也阅读本教程的第一部分。
  • 将jOOQ与Spring结合使用:代码生成是本教程的第二部分,它描述了如何对数据库进行反向工程并创建代表不同数据库表,记录等的jOOQ查询类。 因为这些类是类型安全SQL查询的构建块,所以建议您在阅读本博客文章之前阅读本教程的第二部分

创建Todo类

让我们从创建一个包含单个待办事项条目信息的类开始。 此类具有以下字段:

  • ID字段包含待办事项的ID。
  • creationTime字段包含一个时间戳,该时间戳描述了待办事项条目第一次被持久保存的时间。
  • 描述字段包含待办事项的描述。
  • ModifyTime字段包含一个时间戳,该时间戳描述了待办事项条目的更新时间。
  • 标题字段包含待办事项的标题。

这个相对简单的类的名称是Todo ,它遵循以下三个原则:

Todo类的源代码如下所示:

import org.apache.commons.lang3.builder.ToStringBuilder;
import org.joda.time.LocalDateTime;

import java.sql.Timestamp;

public class Todo {

    private final Long id;

    private final LocalDateTime creationTime;

    private final String description;

    private final LocalDateTime modificationTime;

    private final String title;

    private Todo(Builder builder) {
        this.id = builder.id;

        LocalDateTime creationTime = null;
        if (builder.creationTime != null) {
            creationTime = new LocalDateTime(builder.creationTime);
        }
        this.creationTime = creationTime;

        this.description = builder.description;

        LocalDateTime modificationTime = null;
        if (builder.modificationTime != null) {
            modificationTime = new LocalDateTime(builder.modificationTime);
        }
        this.modificationTime = modificationTime;

        this.title = builder.title;
    }

    public static Builder getBuilder(String title) {
        return new Builder(title);
    }

    //Getters are omitted for the sake of clarity.

    public static class Builder {

        private Long id;

        private Timestamp creationTime;

        private String description;

        private Timestamp modificationTime;

        private String title;

        public Builder(String title) {
            this.title = title;
        }

        public Builder description(String description) {
            this.description = description;
            return this;
        }

        public Builder creationTime(Timestamp creationTime) {
            this.creationTime = creationTime;
            return this;
        }

        public Builder id(Long id) {
            this.id = id;
            return this;
        }

        public Builder modificationTime(Timestamp modificationTime) {
            this.modificationTime = modificationTime;
            return this;
        }

        public Todo build() {
            Todo created = new Todo(this);

            String title = created.getTitle();

            if (title == null || title.length() == 0) {
                throw new IllegalStateException("title cannot be null or empty");
            }

            return created;
        }
    }
}

让我们找出为什么我们需要获取当前日期和时间,更重要的是,什么是最好的方法。

获取当前日期和时间

因为每个待办事项的创建时间和修改时间都存储在数据库中,所以我们需要一种获取当前日期和时间的方法。 当然,我们可以简单地在存储库中创建此信息。 问题在于,如果这样做,我们将无法编写自动测试来确保正确设置了创建时间和修改时间(我们无法为这些字段编写断言,因为它们的值取决于当前时间) 。

这就是为什么我们需要创建一个单独的组件来负责返回当前日期和时间的原因。 DateTimeService接口声明了以下两种方法:

  • getCurrentDateTime()方法将当前日期和时间作为LocalDateTime对象返回。
  • getCurrentTimestamp()方法将当前日期和时间作为Timestamp对象返回。

DateTimeService接口的源代码如下所示:

import org.joda.time.LocalDateTime;
import java.sql.Timestamp;

public interface DateTimeService {

    public LocalDateTime getCurrentDateTime();

    
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值