Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
53 changes: 51 additions & 2 deletions build.gradle.kts
Original file line number Diff line number Diff line change
Expand Up @@ -81,6 +81,8 @@ tasks {
writeEmployeeDaoCode(employeeDaoFile, i)
val employeeAggregateStrategyFile = File(sourceDir, "Employee${i}AggregateStrategy.java")
writeEmployeeAggregateStrategyCode(employeeAggregateStrategyFile, i)
val employeeConditionFile = File(sourceDir, "Employee${i}Condition.java")
writeEmployeeConditionCode(employeeConditionFile, i)
}
println("Generated DAO files in src/main/java/com/example/dao")
}
Expand Down Expand Up @@ -119,8 +121,10 @@ tasks {
(1..generationSize).forEach { i ->
val dir = file("$sqlFileDirPath/Employee${i}Dao")
dir.mkdirs()
val sqlFile = File(dir, "selectById.sql")
writeSelectByIdSqlFile(sqlFile, i)
val selectByIdSqlFile = File(dir, "selectById.sql")
writeSelectByIdSqlFile(selectByIdSqlFile, i)
val selectByConditionSqlFile = File(dir, "selectByCondition.sql")
writeSelectByConditionSqlFile(selectByConditionSqlFile, i)
val createScriptFile = File(dir, "create.script")
writeCreateScriptFile(createScriptFile, i)
val dropScriptFile = File(dir, "drop.script")
Expand All @@ -143,6 +147,8 @@ fun writeEmployeeDaoCode(
"""
package com.example.dao;

import java.util.List;

import org.seasar.doma.Dao;
import org.seasar.doma.Insert;
import org.seasar.doma.Update;
Expand All @@ -166,6 +172,9 @@ fun writeEmployeeDaoCode(
@Select(aggregateStrategy = Employee${i}AggregateStrategy.class)
Employee$i selectById(Long id);

@Select
List<Employee$i> selectByCondition(Employee${i}Condition condition);

@Script
void create();

Expand Down Expand Up @@ -209,6 +218,25 @@ fun writeEmployeeAggregateStrategyCode(
)
}

fun writeEmployeeConditionCode(
file: File,
i: Int,
) {
file.writeText(
"""
package com.example.dao;

import java.util.Objects;

public record Employee${i}Condition(String namePattern, int age) {
public Employee${i}Condition {
Objects.requireNonNull(namePattern);
}
}
""".trimIndent(),
)
}

fun writeEmployeeCode(
file: File,
i: Int,
Expand Down Expand Up @@ -312,6 +340,20 @@ fun writeSelectByIdSqlFile(
)
}

fun writeSelectByConditionSqlFile(
file: File,
i: Int,
) {
file.writeText(
"""
SELECT /*%expand*/*
FROM employee$i e
WHERE e.age > /* condition.age */0
AND e.name LIKE /* condition.namePattern */'test'
""".trimIndent(),
)
}

fun writeCreateScriptFile(
file: File,
i: Int,
Expand Down Expand Up @@ -463,6 +505,13 @@ fun writeEmployeeDaoTestCode(
assertEquals("Engineering", employee2.department.name.value());
assertEquals(employee.id, employee2.manager.id);
}

@Test
void selectByCondition() {
var condition = new Employee${i}Condition("%J%", 20);
var employees = employeeDao.selectByCondition(condition);
assertEquals(2, employees.size());
}
}
""".trimIndent(),
)
Expand Down
9 changes: 9 additions & 0 deletions src/main/java/com/example/EmployeeCondition.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@
package com.example;

import java.util.Objects;

public record EmployeeCondition(String namePattern, int age) {
public EmployeeCondition {
Objects.requireNonNull(namePattern);
}
}
4 changes: 4 additions & 0 deletions src/main/java/com/example/EmployeeDao.java
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
package com.example;

import java.util.List;
import org.seasar.doma.Dao;
import org.seasar.doma.Delete;
import org.seasar.doma.Insert;
Expand All @@ -21,6 +22,9 @@ public interface EmployeeDao {
@Select(aggregateStrategy = EmployeeAggregateStrategy.class)
Employee selectById(Long id);

@Select
List<Employee> selectByCondition(EmployeeCondition condition);

@Script
void create();

Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
SELECT /*%expand*/*
FROM employee e
WHERE e.age > /* condition.age */0
AND e.name LIKE /* condition.namePattern */'test'
7 changes: 7 additions & 0 deletions src/test/java/com/example/EmployeeDaoTest.java
Original file line number Diff line number Diff line change
Expand Up @@ -69,4 +69,11 @@ void selectById() {
assertEquals("Engineering", employee2.department.name.value());
assertEquals(employee.id, employee2.manager.id);
}

@Test
void selectByCondition() {
var condition = new EmployeeCondition("%J%", 20);
var employees = employeeDao.selectByCondition(condition);
assertEquals(2, employees.size());
}
}