ラムダで指定できなくはないが、型パラメータが面倒臭いことになる
val query = select({ it.name }, from = ::_Emp) { e -> where { eq(e.id, 1) }}
fun String.globalExtension() { | |
println(this) | |
} | |
class Scope { | |
fun String.narrowExtension() { | |
println(this) | |
} | |
} |
package org.komapper.quickstart | |
import org.komapper.annotation.KomapperAutoIncrement | |
import org.komapper.annotation.KomapperEntity | |
import org.komapper.annotation.KomapperId | |
import org.komapper.core.dsl.EntityDsl | |
import org.komapper.core.dsl.SchemaDsl | |
import org.komapper.core.dsl.expression.ColumnExpression | |
import org.komapper.core.dsl.scope.WhereDeclaration | |
import org.komapper.jdbc.JdbcDatabase |
val query = select(::_製品移動) { a -> | |
val b = leftJoin(::_倉庫) { b -> | |
eq(a.移送元倉庫id, b.倉庫id) | |
} | |
val c = leftJoin(::_倉庫) { c -> | |
eq(a.移送先倉庫id, c.倉庫id) | |
} | |
associate(a, b) { 製品移動, 倉庫 -> | |
製品移動.移送元倉庫 = 倉庫 | |
} |
@Dao | |
public interface FooDao { | |
public default <R> R findByIds(List<FooId> ids, Collector<Foo, ?, R> collctor) { | |
FooInteranlDao dao = DaoFactory.get(FooInteranlDao.class); | |
return Lists.partition(ids, 5000).stream() // partition は List<A> を 第二引数の数ごと区切ってList<List<A>> にする処理です | |
flatMap(dao::findByIdsInternally) | |
collect(collctor); | |
} | |
} |
@Dao | |
public interface EmployeeDao { | |
default List<Employee> selectWithBuilder() { | |
return selectWithBuilder_private(); | |
} | |
private List<Employee> selectWithBuilder_private() { | |
Config config = Config.get(this); | |
SelectBuilder builder = SelectBuilder.newInstance(config); |
package sample; | |
public class AppConfig implements Config { | |
@Override | |
public QueryImplementors getQueryImplementors() { | |
return new QueryImplementors() { | |
@Override | |
public SqlFileSelectQuery createSqlFileSelectQuery(Method method) { | |
if (method.isAnnotationPresent(Unload.class)) { |
@Entity | |
public class Era { | |
@Id | |
public Integer id; | |
public String name; | |
public Interval interval; | |
} |