• Home
  • Features
  • Pricing
  • Docs
  • Announcements
  • Sign In

jhannes / fluent-jdbc / #190

01 Sep 2025 11:48AM UTC coverage: 92.296% (-0.2%) from 92.457%
#190

push

jhannes-test
Introduce DataQueryParameter for more extensible queries

72 of 85 new or added lines in 18 files covered. (84.71%)

1 existing line in 1 file now uncovered.

1186 of 1285 relevant lines covered (92.3%)

0.92 hits per line

Source File
Press 'n' to go to next uncovered line, 'b' for previous

81.82
/src/main/java/org/fluentjdbc/DbContextInsertOrUpdateBuilder.java
1
package org.fluentjdbc;
2

3

4
import java.util.List;
5
import java.util.Map;
6

7
/**
8
 * Generate a statement that will result in either an <code>UPDATE ...</code> or <code>INSERT ...</code> depending
9
 * on whether the row exists already by collecting field names and parameters. Example:
10
 *
11
 * <pre>
12
 * {@link DbContextTable} table = context.table("database_test_table");
13
 * try (DbContextConnection ignored = context.startConnection(dataSource)) {
14
 *      int count = table
15
 *          .where("id", id)
16
 *          .insertOrUpdate()
17
 *          .setField("name", "Something")
18
 *          .setField("code", 102)
19
 *          .execute(connection);
20
 * }
21
 * </pre>
22
 */
23
public class DbContextInsertOrUpdateBuilder implements DatabaseUpdatable<DbContextInsertOrUpdateBuilder> {
24
    private final DbContextTable table;
25
    private DatabaseInsertOrUpdateBuilder builder;
26

27
    public DbContextInsertOrUpdateBuilder(DbContextTable table, DatabaseInsertOrUpdateBuilder builder) {
1✔
28
        this.table = table;
1✔
29
        this.builder = builder;
1✔
30
    }
1✔
31

32
    /**
33
     * Adds parameters to the <code>INSERT (fieldName) VALUES (expression)</code> and to the list of parameters
34
     */
35
    @Override
36
    public DbContextInsertOrUpdateBuilder addParameters(List<DatabaseQueryParameter> queryParameters) {
NEW
37
        return build(builder.addParameters(queryParameters));
×
38
    }
39

40
    /**
41
     * Adds a parameter to the <code>INSERT (fieldName) VALUES (expression)</code> and to the list of parameters
42
     */
43
    @Override
44
    public DbContextInsertOrUpdateBuilder addParameter(DatabaseQueryParameter parameter) {
45
        return build(builder.addParameter(parameter));
1✔
46
    }
47

48
    /**
49
     * Calls {@link #setField(String, Object)} for each fieldName and parameter
50
     */
51
    @Override
52
    public DbContextInsertOrUpdateBuilder setFields(List<String> fields, List<?> values) {
53
        return build(builder.setFields(fields, values));
×
54
    }
55

56
    /**
57
     * Calls {@link #setField(String, Object)} for each key and value in the parameter map
58
     */
59
    @Override
60
    public DbContextInsertOrUpdateBuilder setFields(Map<String, ?> fields) {
61
        return build(builder.setFields(fields));
1✔
62
    }
63

64
    /**
65
     * Will execute the UPDATE statement to the database
66
     */
67
    public int execute() {
68
        return builder.execute(table.getConnection());
1✔
69
    }
70

71
    private DbContextInsertOrUpdateBuilder build(DatabaseInsertOrUpdateBuilder builder) {
72
        this.builder = builder;
1✔
73
        return this;
1✔
74
    }
75
}
STATUS · Troubleshooting · Open an Issue · Sales · Support · CAREERS · ENTERPRISE · START FREE · SCHEDULE DEMO
ANNOUNCEMENTS · TWITTER · TOS & SLA · Supported CI Services · What's a CI service? · Automated Testing

© 2025 Coveralls, Inc