Skip to content

Commit 1e49fef

Browse files
authored
Merge pull request #447 from domaframework/exclude-null
Support the excludeNull setting for the INSERT and the UPDATE queries…
2 parents 2e6a86e + 128123b commit 1e49fef

File tree

6 files changed

+53
-2
lines changed

6 files changed

+53
-2
lines changed

doma-core/src/main/java/org/seasar/doma/jdbc/criteria/context/InsertSettings.java

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@
22

33
public class InsertSettings extends Settings {
44
private int batchSize = 0;
5+
private boolean excludeNull;
56

67
public int getBatchSize() {
78
return batchSize;
@@ -10,4 +11,12 @@ public int getBatchSize() {
1011
public void setBatchSize(int batchSize) {
1112
this.batchSize = batchSize;
1213
}
14+
15+
public boolean getExcludeNull() {
16+
return excludeNull;
17+
}
18+
19+
public void setExcludeNull(boolean excludeNull) {
20+
this.excludeNull = excludeNull;
21+
}
1322
}

doma-core/src/main/java/org/seasar/doma/jdbc/criteria/context/UpdateSettings.java

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@ public class UpdateSettings extends Settings {
55
private boolean allowEmptyWhere;
66
private boolean ignoreVersion;
77
private boolean suppressOptimisticLockException;
8+
private boolean excludeNull;
89

910
public int getBatchSize() {
1011
return batchSize;
@@ -37,4 +38,12 @@ public boolean getSuppressOptimisticLockException() {
3738
public void setSuppressOptimisticLockException(boolean suppressOptimisticLockException) {
3839
this.suppressOptimisticLockException = suppressOptimisticLockException;
3940
}
41+
42+
public boolean getExcludeNull() {
43+
return excludeNull;
44+
}
45+
46+
public void setExcludeNull(boolean excludeNull) {
47+
this.excludeNull = excludeNull;
48+
}
4049
}

doma-core/src/main/java/org/seasar/doma/jdbc/criteria/statement/EntityqlInsertStatement.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -41,7 +41,7 @@ protected Command<Result<ENTITY>> createCommand() {
4141
query.setCallerMethodName(EXECUTE_METHOD_NAME);
4242
query.setQueryTimeout(settings.getQueryTimeout());
4343
query.setSqlLogType(settings.getSqlLogType());
44-
query.setNullExcluded(false);
44+
query.setNullExcluded(settings.getExcludeNull());
4545
query.setIncludedPropertyNames();
4646
query.setExcludedPropertyNames();
4747
query.setMessage(settings.getComment());

doma-core/src/main/java/org/seasar/doma/jdbc/criteria/statement/EntityqlUpdateStatement.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -41,7 +41,7 @@ protected Command<Result<ENTITY>> createCommand() {
4141
query.setCallerMethodName(EXECUTE_METHOD_NAME);
4242
query.setQueryTimeout(settings.getQueryTimeout());
4343
query.setSqlLogType(settings.getSqlLogType());
44-
query.setNullExcluded(false);
44+
query.setNullExcluded(settings.getExcludeNull());
4545
query.setVersionIgnored(settings.getIgnoreVersion());
4646
query.setIncludedPropertyNames();
4747
query.setExcludedPropertyNames();

doma-core/src/test/java/org/seasar/doma/jdbc/criteria/EntityqlInsertTest.java

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -30,4 +30,20 @@ void insertInto() {
3030
"insert into EMP (ID, NAME, SALARY, VERSION) values (1, 'aaa', 1000, 1)",
3131
sql.getFormattedSql());
3232
}
33+
34+
@Test
35+
void excludeNull() {
36+
Emp emp = new Emp();
37+
emp.setId(1);
38+
emp.setName(null);
39+
emp.setSalary(new BigDecimal("1000"));
40+
emp.setVersion(1);
41+
42+
Emp_ e = new Emp_();
43+
Buildable<?> stmt = entityql.insert(e, emp, settings -> settings.setExcludeNull(true));
44+
45+
Sql<?> sql = stmt.asSql();
46+
assertEquals(
47+
"insert into EMP (ID, SALARY, VERSION) values (1, 1000, 1)", sql.getFormattedSql());
48+
}
3349
}

doma-core/src/test/java/org/seasar/doma/jdbc/criteria/EntityqlUpdateTest.java

Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -47,4 +47,21 @@ void ignoreVersion() {
4747
"update EMP set NAME = 'aaa', SALARY = 1000, VERSION = 1 where ID = 1",
4848
sql.getFormattedSql());
4949
}
50+
51+
@Test
52+
void excludeNull() {
53+
Emp emp = new Emp();
54+
emp.setId(1);
55+
emp.setName(null);
56+
emp.setSalary(new BigDecimal("1000"));
57+
emp.setVersion(1);
58+
59+
Emp_ e = new Emp_();
60+
Buildable<?> stmt = entityql.update(e, emp, settings -> settings.setExcludeNull(true));
61+
62+
Sql<?> sql = stmt.asSql();
63+
assertEquals(
64+
"update EMP set SALARY = 1000, VERSION = 1 + 1 where ID = 1 and VERSION = 1",
65+
sql.getFormattedSql());
66+
}
5067
}

0 commit comments

Comments
 (0)