diff --git a/jdbc/jooq/pom.xml b/jdbc/jooq/pom.xml index 13a3a3c4..e55191db 100644 --- a/jdbc/jooq/pom.xml +++ b/jdbc/jooq/pom.xml @@ -1,75 +1,74 @@ - 4.0.0 + xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd"> + 4.0.0 - spring-data-jdbc-jooq + spring-data-jdbc-jooq - - org.springframework.data.examples - spring-data-jdbc-examples - 2.0.0.BUILD-SNAPSHOT - ../pom.xml - + + org.springframework.data.examples + spring-data-jdbc-examples + 2.0.0.BUILD-SNAPSHOT + ../pom.xml + - Spring Data JDBC - Usage with jOOQ - Sample project demonstrating Spring Data JDBC features + Spring Data JDBC - Usage with jOOQ + Sample project demonstrating Spring Data JDBC features - - 3.11.0 - 2.0.3.RELEASE - + + 3.11.0 + 2.0.3.RELEASE + - - - org.jooq - jooq - ${jooq.version} - - - org.springframework.boot - spring-boot-starter-jooq - ${spring-boot-starter-jooq.version} - - - org.jooq - jooq-meta-extensions - ${jooq.version} - - + + + org.jooq + jooq + ${jooq.version} + + + org.springframework.boot + spring-boot-starter-jooq + ${spring-boot-starter-jooq.version} + + + org.jooq + jooq-meta-extensions + ${jooq.version} + + - - - - org.jooq - jooq-codegen-maven - ${jooq.version} + + + + org.jooq + jooq-codegen-maven + ${jooq.version} - - - - generate - - - + + + + generate + + + - - - - org.jooq.meta.extensions.ddl.DDLDatabase - - - scripts - ${basedir}/src/main/resources/schema.sql - - - - - example.springdata.jdbc.basics.simpleentity.domain - ${basedir}/gensrc/main/java - - - - - - + + + + org.jooq.meta.extensions.ddl.DDLDatabase + + + scripts + ${basedir}/src/main/resources/schema.sql + + + + + example.springdata.jdbc.basics.simpleentity.domain + + + + + + \ No newline at end of file diff --git a/jdbc/jooq/src/main/java/example/springdata/jdbc/jooq/AgeGroup.java b/jdbc/jooq/src/main/java/example/springdata/jdbc/jooq/AgeGroup.java index f7dbc09b..13af46f2 100644 --- a/jdbc/jooq/src/main/java/example/springdata/jdbc/jooq/AgeGroup.java +++ b/jdbc/jooq/src/main/java/example/springdata/jdbc/jooq/AgeGroup.java @@ -19,11 +19,9 @@ package example.springdata.jdbc.jooq; * Age group for which a LegoSet is intended. * * @author Jens Schauder + * @author Florian Lüdiger */ public enum AgeGroup { - _0to3, - _3to8, - _8to12, - _12andOlder + _0to3, _3to8, _8to12, _12andOlder } diff --git a/jdbc/jooq/src/main/java/example/springdata/jdbc/jooq/Category.java b/jdbc/jooq/src/main/java/example/springdata/jdbc/jooq/Category.java index 52d59473..0782cfd3 100644 --- a/jdbc/jooq/src/main/java/example/springdata/jdbc/jooq/Category.java +++ b/jdbc/jooq/src/main/java/example/springdata/jdbc/jooq/Category.java @@ -16,6 +16,7 @@ package example.springdata.jdbc.jooq; import lombok.Data; + import org.springframework.data.annotation.Id; /** diff --git a/jdbc/jooq/src/main/java/example/springdata/jdbc/jooq/CategoryConfiguration.java b/jdbc/jooq/src/main/java/example/springdata/jdbc/jooq/CategoryConfiguration.java index 14e8abac..76dbc7ad 100644 --- a/jdbc/jooq/src/main/java/example/springdata/jdbc/jooq/CategoryConfiguration.java +++ b/jdbc/jooq/src/main/java/example/springdata/jdbc/jooq/CategoryConfiguration.java @@ -15,6 +15,8 @@ */ package example.springdata.jdbc.jooq; +import javax.sql.DataSource; + import org.jooq.impl.DataSourceConnectionProvider; import org.jooq.impl.DefaultConfiguration; import org.jooq.impl.DefaultDSLContext; @@ -29,8 +31,6 @@ import org.springframework.data.jdbc.repository.config.JdbcConfiguration; import org.springframework.data.relational.core.mapping.event.RelationalEvent; import org.springframework.jdbc.datasource.TransactionAwareDataSourceProxy; -import javax.sql.DataSource; - /** * Contains infrastructure necessary for creating repositories and two listeners. *

@@ -45,18 +45,7 @@ import javax.sql.DataSource; @Import(JdbcConfiguration.class) public class CategoryConfiguration { - @Autowired - private DataSource dataSource; - - @Bean - public ApplicationListener loggingListener() { - - return (ApplicationListener) event -> { - if (event instanceof RelationalEvent) { - System.out.println("Received an event: " + event); - } - }; - } + @Autowired private DataSource dataSource; @Bean public DataSourceConnectionProvider connectionProvider() { diff --git a/jdbc/jooq/src/main/java/example/springdata/jdbc/jooq/CategoryRepository.java b/jdbc/jooq/src/main/java/example/springdata/jdbc/jooq/CategoryRepository.java index 958fff7e..088b5b30 100644 --- a/jdbc/jooq/src/main/java/example/springdata/jdbc/jooq/CategoryRepository.java +++ b/jdbc/jooq/src/main/java/example/springdata/jdbc/jooq/CategoryRepository.java @@ -22,5 +22,4 @@ import org.springframework.data.repository.CrudRepository; * * @author Jens Schauder */ -interface CategoryRepository extends CrudRepository, JooqRepository { -} +interface CategoryRepository extends CrudRepository, JooqRepository {} diff --git a/jdbc/jooq/src/main/java/example/springdata/jdbc/jooq/JooqRepository.java b/jdbc/jooq/src/main/java/example/springdata/jdbc/jooq/JooqRepository.java index 2ab8a90f..2bf919b3 100644 --- a/jdbc/jooq/src/main/java/example/springdata/jdbc/jooq/JooqRepository.java +++ b/jdbc/jooq/src/main/java/example/springdata/jdbc/jooq/JooqRepository.java @@ -2,6 +2,9 @@ package example.springdata.jdbc.jooq; import java.util.List; +/** + * @author Florian Lüdiger + */ public interface JooqRepository { - List getCategoriesWithAgeGroup(AgeGroup ageGroup); + List getCategoriesWithAgeGroup(AgeGroup ageGroup); } diff --git a/jdbc/jooq/src/main/java/example/springdata/jdbc/jooq/JooqRepositoryImpl.java b/jdbc/jooq/src/main/java/example/springdata/jdbc/jooq/JooqRepositoryImpl.java index a9e960ff..e3d8bef4 100644 --- a/jdbc/jooq/src/main/java/example/springdata/jdbc/jooq/JooqRepositoryImpl.java +++ b/jdbc/jooq/src/main/java/example/springdata/jdbc/jooq/JooqRepositoryImpl.java @@ -1,10 +1,10 @@ package example.springdata.jdbc.jooq; -import org.jooq.DSLContext; +import static example.springdata.jdbc.basics.simpleentity.domain.tables.Category.*; import java.util.List; -import static example.springdata.jdbc.basics.simpleentity.domain.tables.Category.CATEGORY; +import org.jooq.DSLContext; /** * Implementations for custom repository access using jOOQ. @@ -13,17 +13,14 @@ import static example.springdata.jdbc.basics.simpleentity.domain.tables.Category */ public class JooqRepositoryImpl implements JooqRepository { - private final DSLContext dslContext; + private final DSLContext dslContext; - public JooqRepositoryImpl(DSLContext dslContext) { - this.dslContext = dslContext; - } + public JooqRepositoryImpl(DSLContext dslContext) { + this.dslContext = dslContext; + } - public List getCategoriesWithAgeGroup(AgeGroup ageGroup) { - return this.dslContext - .select() - .from(CATEGORY) - .where(CATEGORY.AGE_GROUP.equal(ageGroup.name())) - .fetchInto(Category.class); - } + public List getCategoriesWithAgeGroup(AgeGroup ageGroup) { + return this.dslContext.select().from(CATEGORY).where(CATEGORY.AGE_GROUP.equal(ageGroup.name())) + .fetchInto(Category.class); + } } diff --git a/jdbc/jooq/src/test/java/example/springdata/jdbc/jooq/SimpleEntityTests.java b/jdbc/jooq/src/test/java/example/springdata/jdbc/jooq/SimpleEntityTests.java index 2943f55c..450a8695 100644 --- a/jdbc/jooq/src/test/java/example/springdata/jdbc/jooq/SimpleEntityTests.java +++ b/jdbc/jooq/src/test/java/example/springdata/jdbc/jooq/SimpleEntityTests.java @@ -15,6 +15,11 @@ */ package example.springdata.jdbc.jooq; +import static java.util.Arrays.*; +import static org.assertj.core.api.Assertions.*; + +import java.util.List; + import org.junit.Test; import org.junit.runner.RunWith; import org.springframework.beans.factory.annotation.Autowired; @@ -23,11 +28,6 @@ import org.springframework.boot.test.context.SpringBootTest; import org.springframework.context.annotation.ComponentScan; import org.springframework.test.context.junit4.SpringRunner; -import java.util.List; - -import static java.util.Arrays.asList; -import static org.assertj.core.api.Assertions.assertThat; - /** * Demonstrates simple CRUD operations with a simple entity without any references. * @@ -40,16 +40,15 @@ import static org.assertj.core.api.Assertions.assertThat; @ComponentScan public class SimpleEntityTests { - @Autowired - CategoryRepository repository; + @Autowired CategoryRepository repository; @Test public void exerciseRepositoryForSimpleEntity() { // create some categories - Category cars = new Category(null,"Cars", "Anything that has approximately 4 wheels", AgeGroup._3to8); + Category cars = new Category(null, "Cars", "Anything that has approximately 4 wheels", AgeGroup._3to8); - Category buildings = new Category(null,"Buildings", null, AgeGroup._12andOlder); + Category buildings = new Category(null, "Buildings", null, AgeGroup._12andOlder); // save categories repository.saveAll(asList(cars, buildings)); @@ -64,9 +63,11 @@ public class SimpleEntityTests { Output.list(repository.findAll(), "`Buildings` has a description"); List categoryList = repository.getCategoriesWithAgeGroup(AgeGroup._3to8); - assertThat(categoryList.size()).isEqualTo(1); - assertThat(categoryList.get(0).getName()).isEqualTo(cars.getName()); - assertThat(categoryList.get(0).getDescription()).isEqualTo(cars.getDescription()); - assertThat(categoryList.get(0).getAgeGroup()).isEqualTo(cars.getAgeGroup()); + + assertThat(categoryList) // + .extracting(Category::getName, Category::getDescription, Category::getAgeGroup) // + .containsExactly( // + tuple(cars.getName(), cars.getDescription(), cars.getAgeGroup()) // + ); } }