• 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

89.47
/src/main/java/org/fluentjdbc/DbContextInsertBuilder.java
1
package org.fluentjdbc;
2

3
import javax.annotation.CheckReturnValue;
4
import java.util.List;
5
import java.util.Map;
6

7
/**
8
 * Generate <code>INSERT</code> statements by collecting field names and parameters. Support
9
 * autogeneration of primary keys. Example:
10
 *
11
 * <pre>
12
 * {@link DbContextTable} table = context.table("database_test_table");
13
 * try (DbContextConnection ignored = context.startConnection(dataSource)) {
14
 *     Long id = table.insert()
15
 *      .setPrimaryKey("id", (Long)null)
16
 *      .setField("name", "Something")
17
 *      .setField("code", 102)
18
 *      .execute();
19
 * }
20
 * </pre>
21
 *
22
 * @see DatabaseInsertBuilder
23
 */
24
public class DbContextInsertBuilder implements DatabaseUpdatable<DbContextInsertBuilder> {
25

26
    public class DbContextInsertBuilderWithPk<T> {
27

28
        private final DatabaseInsertWithPkBuilder<T> builder;
29

30
        public DbContextInsertBuilderWithPk(DatabaseInsertWithPkBuilder<T> builder) {
1✔
31
            this.builder = builder;
1✔
32
        }
1✔
33

34
        @CheckReturnValue
35
        public DbContextInsertBuilderWithPk<T> setField(String fieldName, Object parameter) {
36
            //noinspection ResultOfMethodCallIgnored
37
            builder.setField(fieldName, parameter);
1✔
38
            return this;
1✔
39
        }
40

41
        public T execute() {
42
            return builder.execute(dbContextTable.getConnection());
1✔
43
        }
44
    }
45

46
    private DatabaseInsertBuilder builder;
47
    private final DbContextTable dbContextTable;
48

49
    public DbContextInsertBuilder(DbContextTable dbContextTable) {
1✔
50
        this.dbContextTable = dbContextTable;
1✔
51
        builder = dbContextTable.getTable().insert();
1✔
52
    }
1✔
53

54
    /**
55
     * Adds primary key to the <code>INSERT</code> statement if idValue is not null. If idValue is null
56
     * this will {@link java.sql.PreparedStatement#execute(String, String[])} to generate the primary
57
     * key using the underlying table autogeneration mechanism
58
     */
59
    @CheckReturnValue
60
    public <T> DbContextInsertBuilderWithPk<T> setPrimaryKey(String idField, T idValue) {
61
        DatabaseInsertWithPkBuilder<T> setPrimaryKey = builder.setPrimaryKey(idField, idValue);
1✔
62
        return new DbContextInsertBuilderWithPk<>(setPrimaryKey);
1✔
63
    }
64

65
    /**
66
     * Adds parameters to the <code>INSERT (fieldName) VALUES (expression)</code> and to the list of parameters
67
     */
68
    public DbContextInsertBuilder addParameters(List<DatabaseQueryParameter> queryParameters) {
NEW
69
        return build(builder.addParameters(queryParameters));
×
70
    }
71

72
    /**
73
     * Adds a parameter to the <code>INSERT (fieldName) VALUES (expression)</code> and to the list of parameters
74
     */
75
    @CheckReturnValue
76
    public DbContextInsertBuilder addParameter(DatabaseQueryParameter parameter) {
77
        return build(builder.addParameter(parameter));
1✔
78
    }
79

80
    /**
81
     * Calls {@link #setField(String, Object)} for each fieldName and parameter
82
     */
83
    @Override
84
    public DbContextInsertBuilder setFields(List<String> fields, List<?> values) {
85
        return build(builder.setFields(fields, values));
1✔
86
    }
87

88
    /**
89
     * Calls {@link #setField(String, Object)} for each key and value in the parameter map
90
     */
91
    @Override
92
    public DbContextInsertBuilder setFields(Map<String, ?> fields) {
93
        return build(builder.setFields(fields));
×
94
    }
95

96
    /**
97
     * Executes the insert statement and returns the number of rows inserted
98
     */
99
    public int execute() {
100
        return builder.execute(dbContextTable.getConnection());
1✔
101
    }
102

103
    private DbContextInsertBuilder build(DatabaseInsertBuilder builder) {
104
        this.builder = builder;
1✔
105
        return this;
1✔
106
    }
107
}
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