我最近稳定了用Java编写的主要开源库的开发.然后我在服务器端发表了一篇文章,这给我带来了许多积极的(但也是批评性的,建设性的)反馈.并且是第一个贡献者,这太棒了!
因此,通过所有这些良好的反馈,我对我的项目有了很好的感觉,我创造了一些有用和原创的东西.我的项目背后的一些关键想法,以及为什么我认为它是原创的:
我认为这些关键想法对于特定类型的开发人员非常有用.特定的开发人员
现在是艰苦工作的开始.怎么引起注意?我怎样才能获得更多人群?我的项目如何变得相关?如何达到"特定类型的开发者"?
我正在阅读jOOQ的这篇教程
它向我展示了如何从 Gradle 内部使用 jOOQ 代码生成。
根据本教程,我修改了我的build.gradle文件,如下所示:
group 'com.abhi'
version '1.0-SNAPSHOT'
apply plugin: 'java'
apply plugin: 'org.flywaydb.flyway'
sourceCompatibility = 1.8
buildscript {
repositories {
mavenCentral()
}
dependencies {
classpath 'org.flywaydb:flyway-gradle-plugin:3.2.1'
classpath 'org.jooq:jooq-codegen:3.7.1'
classpath 'com.h2database:h2:1.4.177'
}
}
repositories {
mavenCentral()
}
dependencies {
compile group: 'org.jooq', name: 'jooq', version: '3.7.1'
compile group: 'org.jooq', name: 'jooq-meta', version: '3.7.1'
compile group: 'org.jooq', name: 'jooq-codegen', version: '3.7.1'
runtime group: 'com.h2database', name: 'h2', version: '1.4.177'
}
flyway {
url = 'jdbc:h2:file:target/foobar'
user …Run Code Online (Sandbox Code Playgroud) 我正在寻找如何执行超过 22 行的 jOOQ 查询的示例。
http://www.jooq.org/doc/latest/manual/sql-building/column-expressions/row-value-expressions/
告诉我这是可能的,但我还没找到例子。
有人能指出我正确的方向吗?
我目前在 JOOQ 中使用此代码:
Condition condition = DSL.trueCondition();
if( isNotBlank(email) ){
condition = condition.and(APP_USER.EMAIL.likeRegex(email));
}
Run Code Online (Sandbox Code Playgroud)
最终发出 Postgres 特定的 SQL,在数据库中进行正则表达式匹配:
app_user.email ~ '{email regex}'
Run Code Online (Sandbox Code Playgroud)
是否可以让 JOOQ 发布不区分大小写的版本:app_user.email ~* '{email regex}'?
我当前的解决方法是使用此代码:
if( isNotBlank(email) ){
condition = condition.and(
APP_USER.EMAIL.lower().likeRegex(email.toLowerCase()) );
}
Run Code Online (Sandbox Code Playgroud) 这就是我的意思。如何编写 docker-compose.yaml 文件,以便在“构建”其中一个服务时,它首先运行另一个服务?
我会尽量说得更具体一些。我正在尝试使用数据库库 JOOQ 构建 Java 应用程序,该应用程序希望在构建时连接到数据库,以便生成与数据库表相对应的 Java 类。我想要 Dockerfile(s) 和 docker-compose.yaml 文件的某种组合,以便以下大致按以下顺序发生。
这是我正在使用的 docker-compose.yaml 文件
version: '3.7'
services:
postgres:
image: postgres:10.5-alpine
restart: always
ports:
- "6432:5432"
environment:
POSTGRES_DB: flashtools
POSTGRES_USER: flashtools
POSTGRES_PASSWORD: flashtools
volumes:
- ./src/main/scripts/01_init.sql:/docker-entrypoint-
initdb.d/01_init.sql
web:
build: .
network_mode: host
depends_on:
- postgres
ports:
- "8080:8080"
Run Code Online (Sandbox Code Playgroud)
我会用更多细节来充实这一点,但希望我要问的是非常简单的。
我正在使用 JooQ 在 Aurora MySQL 上执行 CRUD 操作。
我有以下场景:
有没有办法只捕获 DuplicateKeyException?JooQ 将异常作为 DataAccessException 抛出。
在启用 OnDuplicateKeyUpdate 时,似乎如果记录存在,它将盲目更新数据库中的记录。我的用例是如果记录存在于数据库中,则在满足更新条件时更新记录。
我可以在两个单独的 Insert 和 Update 调用中做到这一点,但有没有办法在单个调用中做到这一点?
谢谢!!
我有一个包含 5 列的 USER_ROLES 表。另外,还有一个 UserRole 类,其字段数和名称与 USER_ROLES 相同。
我试图插入一行而不指定列名:
UserRole ur = new UserRole();
// UserRole fields setting
create.insertInto(USER_ROLES).values(ur).execute();
Run Code Online (Sandbox Code Playgroud)
但是当我尝试创建行时出现此错误:
The number of values must match the number of fields
我是否被迫指定列名称?
我一直在 jOOQ 中使用Schema.getTables()方法来获取模式中的表列表,但今天我发现该方法返回的是我们执行 jOOQ 代码生成时存在的表列表,而不是返回的表存在于此时此刻。
我的具体用例是我们随着时间的推移创建表(自动分区),并且我们的 Java 服务对它们进行一些操作。
jOOQ 有没有办法从数据库获取当前表列表?
我可以直接查询information_schema.tables,但我更愿意重用 jOOQ 中的方法(如果有)。
这是场景,我有 5 个表,彼此之间具有一对多关系,我必须在下面给定的 Pojos 和 Jooq 中以分层方式映射结果数据。
DB 表是 a、b、c、d、e
// Here are response Pojo's
Class APojo {
public string name;
public List<BPojo> listOfB;
}
Class BPojo {
public string name;
public List<CPojo> listOfC;
}
Class CPojo {
public string name;
public List<DPojo> listOfD;
}
Class DPojo {
public string name;
public List<EPojo> listOfE;
}
Class EPojo {
public string name;
}
Run Code Online (Sandbox Code Playgroud)
预期样本响应
{
"name":"A1",
"list_of_b":[
{
"name":"A1B1",
"list_of_c":[
{
"name":"A1B1C1",
"list_of_d":[
{
"name":"A1B1C1D1",
"list_of_e":[
{
"name":"A1B1C1D1E1"
},
{
"name":"A1B1C1D1E2" …Run Code Online (Sandbox Code Playgroud) 我将 jooq 与自定义绑定一起使用,该绑定将所有 JTS 几何类型转换为适当的 Postgis 数据类型。这使我能够无缝地编写和读取 JTS 几何类型,但我无法使用这些相同的自定义类型执行查询。
例如,当我尝试将此条件添加到查询中时:
Polygon polygon = geometryFactory.createPolygon(
new Coordinate[]{topLeftCorner, bottomLeftCorner, bottomRightCorner, topRightCorner, topLeftCorner}
);
polygon.setSRID(4326);
DSL.condition("ST_WITHIN({0}, {1})", USER.COORDINATES, polygon)
Run Code Online (Sandbox Code Playgroud)
它失败并显示以下消息
org.jooq.exception.SQLDialectNotSupportedException: Type class org.locationtech.jts.geom.Polygon is not supported in dialect DEFAULT
Run Code Online (Sandbox Code Playgroud)