30.6使用jOOQ
Java面向对象查询(jOOQ)是Data Geekery的一个流行产品, 它从您的数据库生成Java代码,并允许您通过其流畅的API构建类型安全的SQL
查询。商业版和开源版都可以与Spring Boot一起使用。
30.6.1代码生成
要使用jOOQ类型安全查询,您需要从数据库模式生成Java类。您可以按照jOOQ用户手册中的说明进行 操作。如果您使
用 jooq-codegen-maven 插件并且还使用 spring-boot-starter-parent “父POM”,则可以安全地省略插件的 <version> 标记。您还可以
使用Spring引导定义的版本变量(例如 h2.version )来声明插件的数据库依赖性。以下清单显示了一个示例:
<plugin>
<groupId>org.jooq</groupId>
<artifactId>jooq-codegen-maven</artifactId>
<executions>
...
</executions>
<dependencies>
<dependency>
<groupId>com.h2database</groupId>
<artifactId>h2</artifactId>
<version>${h2.version}</version>
</dependency>
</dependencies>
<configuration>
<jdbc>
<driver>org.h2.Driver</driver>
<url>jdbc:h2:~/yourdatabase</url>
</jdbc>
<generator>
...
</generator>
</configuration>
</plugin>
30.6.2使用DSLContext
jOOQ提供的流畅API通过 org.jooq.DSLContext 接口启动。Spring Boot将 DSLContext 自动配置为Spring Bean并将其连接到您的应
用 DataSource 。要使用 DSLContext ,您可以 @Autowire ,如下例所示:
@Component
public class JooqExample implements CommandLineRunner {
private final DSLContext create;
@Autowired
public JooqExample(DSLContext dslContext) {
this.create = dslContext;
}
}
jOOQ手册倾向于使用名为 create 的变量来保存 DSLContext 。
然后,您可以使用 DSLContext 构建查询,如以下示例所示:
public List<GregorianCalendar> authorsBornAfter1980() {
return this.create.selectFrom(AUTHOR)
.where(AUTHOR.DATE_OF_BIRTH.greaterThan(new GregorianCalendar(1980, 0, 1)))
.fetch(AUTHOR.DATE_OF_BIRTH);
}
30.6.3 jOOQ SQL方言
除非已配置 spring.jooq.sql-dialect 属性,否则Spring Boot将确定用于数据源的SQL方言。如果Spring Boot无法检测到方言,则使
用 DEFAULT 。
Spring Boot只能自动配置开源版本的jOOQ支持的方言。
30.6.4自定义jOOQ
通过定义自己的 @Bean 定义可以实现更高级的自定义,这些定义在创建jOOQ Configuration 时使用。您可以为以下jOOQ类型定义beans:
ConnectionProvider
ExecutorProvider
TransactionProvider
RecordMapperProvider
RecordUnmapperProvider
RecordListenerProvider
ExecuteListenerProvider
VisitListenerProvider
TransactionListenerProvider
如果您想完全控制jOOQ配置,也可以创建自己的 org.jooq.Configuration @Bean 。
31.使用NoSQL Technologies
Spring数据提供了其他项目,可帮助您访问各种NoSQL技术,包括:MongoDB, Neo4J, Elasticsearch, Solr, Redis, Gemfire,
Cassandra, Couchbase和 LDAP。Spring Boot为Redis,MongoDB,Neo4j,Elasticsearch,Solr Cassandra,Couchbase和LDAP提供自
动配置。您可以使用其他项目,但必须自己配置它们。