Spring Data JDBC with jOOQ demonstrates how to access a database with jOOQ in combination with Spring Data JDBC. The domain model is based on Q&A Board example.
DROP TABLE IF EXISTS ANSWER CASCADE;
DROP TABLE IF EXISTS QUESTION CASCADE;
DROP TABLE IF EXISTS CHANNEL CASCADE;
DROP TABLE IF EXISTS USERS CASCADE;
DROP TABLE IF EXISTS TAG CASCADE;
DROP TABLE IF EXISTS CONTENT_LIKE CASCADE;
CREATE TABLE USERS (
ID VARCHAR(100) NOT NULL,
VERSION BIGINT NOT NULL,
NAME VARCHAR(100) NOT NULL,
CREATED_AT TIMESTAMP(6) NOT NULL,
PRIMARY KEY (ID)
);
CREATE TABLE CHANNEL (
ID BIGINT AUTO_INCREMENT NOT NULL,
VERSION BIGINT NOT NULL,
NAME VARCHAR(100) NOT NULL,
DESCRIPTION VARCHAR(255) NOT NULL,
CREATED_BY VARCHAR(100),
CREATED_AT TIMESTAMP(6) NOT NULL,
PRIMARY KEY (ID)
);
ALTER TABLE CHANNEL ADD FOREIGN KEY(CREATED_BY) REFERENCES USERS(ID);
CREATE TABLE QUESTION (
ID BIGINT AUTO_INCREMENT NOT NULL,
VERSION BIGINT NOT NULL,
CHANNEL_ID BIGINT,
STATUS VARCHAR(100) NOT NULL,
TITLE VARCHAR(200) NOT NULL,
CONTENT VARCHAR(200) NOT NULL,
CREATED_BY VARCHAR(100),
CREATED_AT TIMESTAMP(6) NOT NULL,
PRIMARY KEY (ID)
);
ALTER TABLE QUESTION ADD FOREIGN KEY(CHANNEL_ID) REFERENCES CHANNEL(ID);
ALTER TABLE QUESTION ADD FOREIGN KEY(CREATED_BY) REFERENCES USERS(ID);
CREATE TABLE TAG (
ID BIGINT AUTO_INCREMENT NOT NULL,
QUESTION_ID BIGINT NOT NULL,
NAME VARCHAR(100) NOT NULL,
PRIMARY KEY (ID, QUESTION_ID)
);
ALTER TABLE TAG ADD FOREIGN KEY(QUESTION_ID) REFERENCES QUESTION(ID);
CREATE TABLE CONTENT_LIKE (
ID BIGINT AUTO_INCREMENT NOT NULL,
QUESTION_ID BIGINT NOT NULL,
COUNT BIGINT NOT NULL,
PRIMARY KEY (ID, QUESTION_ID)
);
ALTER TABLE CONTENT_LIKE ADD FOREIGN KEY(QUESTION_ID) REFERENCES QUESTION(ID);
CREATE TABLE ANSWER (
ID BIGINT AUTO_INCREMENT NOT NULL,
VERSION BIGINT NOT NULL,
QUESTION_ID BIGINT NOT NULL,
CONTENT VARCHAR(200) NOT NULL,
CREATED_BY VARCHAR(100),
CREATED_AT TIMESTAMP(6) NOT NULL,
PRIMARY KEY (ID)
);
ALTER TABLE ANSWER ADD FOREIGN KEY(QUESTION_ID) REFERENCES QUESTION(ID);
ALTER TABLE ANSWER ADD FOREIGN KEY(CREATED_BY) REFERENCES USERS(ID);
$ mvn test