Skip to content

Commit ae0ee18

Browse files
committed
executeAndReturnKey for inserts, Optionals for selectOnes, documentation
1 parent 1cf1c56 commit ae0ee18

7 files changed

Lines changed: 74 additions & 6 deletions

File tree

README.md

Lines changed: 45 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -22,15 +22,16 @@ A Java-Library to build SQL-Statements
2222
<dependency>
2323
<groupId>de.jaggl.sqlbuilder</groupId>
2424
<artifactId>sqlbuilder-core</artifactId>
25-
<version>2.6.3</version>
25+
<version>2.6.4</version>
2626
</dependency>
2727
```
2828

2929
### Simple Example
3030

3131
```java
3232
private static final Table PERSONS = Table.create("persons");
33-
private static final VarCharColumn LASTNAME = PERSONS.varCharColumn("lastname").build();
33+
private static final VarCharColumn FORENAME = PERSONS.varCharColumn("forename").size(50).build();
34+
private static final VarCharColumn LASTNAME = PERSONS.varCharColumn("lastname").size(50).build();
3435

3536
public static final void main(String[] args)
3637
{
@@ -46,6 +47,48 @@ SELECT * FROM `persons` WHERE `persons`.`lastname` = 'Doe'
4647
```
4748
To get the SQL-statement as a string, call `build()` instead of `print()`
4849

50+
#### Some other examples:
51+
52+
```java
53+
Queries.insertInto(PERSONS)
54+
.set(FORENAME, "John")
55+
.set(LASTNAME, "Doe")
56+
.print();
57+
```
58+
Output:
59+
```sql
60+
INSERT INTO `persons` SET `persons`.`forename` = 'John', `persons`.`lastname` = 'Doe'
61+
```
62+
63+
```java
64+
Queries.update(PERSONS)
65+
.set(FORENAME, "John")
66+
.where(LASTNAME.eq("Doe"))
67+
.print();
68+
```
69+
Output:
70+
```sql
71+
UPDATE `persons` SET `persons`.`forename` = 'John', WHERE `persons`.`lastname` = 'Doe'
72+
```
73+
74+
```java
75+
Queries.deleteFrom(PERSONS)
76+
.where(LASTNAME.eq("Doe"))
77+
.print();
78+
```
79+
Output:
80+
```sql
81+
DELETE FROM `persons` WHERE `persons`.`lastname` = 'Doe'
82+
```
83+
84+
```java
85+
PERSONS.buildCreateTable().println()
86+
```
87+
Output:
88+
```sql
89+
CREATE TABLE `persons` (`forename` VARCHAR(50) DEFAULT NULL, `lastname` VARCHAR(50) DEFAULT NULL)
90+
```
91+
4992
### Features
5093

5194
- Build SQL-queries in different dialects, currently supported are:

pom.xml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@
33

44
<groupId>de.jaggl.sqlbuilder</groupId>
55
<artifactId>sqlbuilder-core</artifactId>
6-
<version>2.6.3</version>
6+
<version>2.6.4</version>
77

88
<packaging>jar</packaging>
99

src/main/java/de/jaggl/sqlbuilder/queries/Insert.java

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,7 @@
1515
import de.jaggl.sqlbuilder.domain.ValuableColumn;
1616
import de.jaggl.sqlbuilder.domain.ValuableFunction;
1717
import de.jaggl.sqlbuilder.functions.Function;
18+
import de.jaggl.sqlbuilder.queryexecutor.QueryExecutor;
1819
import de.jaggl.sqlbuilder.schema.Table;
1920
import de.jaggl.sqlbuilder.utils.Indentation;
2021
import lombok.Getter;
@@ -97,4 +98,9 @@ public static Insert copy(Insert insert)
9798
{
9899
return new Insert(insert);
99100
}
101+
102+
public long executeAndReturnKey(QueryExecutor queryExecutor)
103+
{
104+
return queryExecutor.executeAndReturnKey(this);
105+
}
100106
}

src/main/java/de/jaggl/sqlbuilder/queries/UpdatebleQuery.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@
99
*/
1010
public interface UpdatebleQuery extends Query
1111
{
12-
default int execute(QueryExecutor queryExecutor)
12+
default long execute(QueryExecutor queryExecutor)
1313
{
1414
return queryExecutor.execute(this);
1515
}

src/main/java/de/jaggl/sqlbuilder/queryexecutor/QueryExecutor.java

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
package de.jaggl.sqlbuilder.queryexecutor;
22

33
import de.jaggl.sqlbuilder.queries.ExecutableQuery;
4+
import de.jaggl.sqlbuilder.queries.Insert;
45
import de.jaggl.sqlbuilder.queries.UpdatebleQuery;
56

67
/**
@@ -14,7 +15,9 @@ public interface QueryExecutor
1415

1516
<T> SelectQueryExecutor<T> select(Class<T> elementType);
1617

17-
int execute(UpdatebleQuery updatebleQuery);
18+
long execute(UpdatebleQuery updatebleQuery);
19+
20+
long executeAndReturnKey(Insert insert);
1821

1922
void execute(ExecutableQuery executableQuery);
2023
}

src/test/java/de/jaggl/sqlbuilder/queries/UpdatebleQueryTest.java

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
package de.jaggl.sqlbuilder.queries;
22

3+
import static de.jaggl.sqlbuilder.queries.Queries.insertInto;
34
import static de.jaggl.sqlbuilder.queries.Queries.update;
45
import static org.assertj.core.api.Assertions.assertThat;
56

@@ -22,4 +23,12 @@ void testQuery()
2223

2324
assertThat(update(TABLE).set(LASTNAME, "Schumacher").execute(queryExecutor)).isEqualTo(5);
2425
}
26+
27+
@Test
28+
void testInsertQuery()
29+
{
30+
var queryExecutor = new MyQueryExecutor();
31+
32+
assertThat(insertInto(TABLE).set(LASTNAME, "Schumacher").executeAndReturnKey(queryExecutor)).isEqualTo(3);
33+
}
2534
}

src/test/java/de/jaggl/sqlbuilder/testsupport/QueryExecutorTestSupport.java

Lines changed: 8 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
package de.jaggl.sqlbuilder.testsupport;
22

33
import de.jaggl.sqlbuilder.queries.ExecutableQuery;
4+
import de.jaggl.sqlbuilder.queries.Insert;
45
import de.jaggl.sqlbuilder.queries.UpdatebleQuery;
56
import de.jaggl.sqlbuilder.queryexecutor.QueryExecutor;
67
import de.jaggl.sqlbuilder.queryexecutor.RowExtractor;
@@ -29,11 +30,17 @@ public <T> SelectQueryExecutor<T> select(Class<T> elementType)
2930
}
3031

3132
@Override
32-
public int execute(UpdatebleQuery updatebleQuery)
33+
public long execute(UpdatebleQuery updatebleQuery)
3334
{
3435
return 5;
3536
}
3637

38+
@Override
39+
public long executeAndReturnKey(Insert insert)
40+
{
41+
return 3;
42+
}
43+
3744
@Override
3845
public void execute(ExecutableQuery executableQuery)
3946
{

0 commit comments

Comments
 (0)