use of org.jdbi.v3.core.statement.SqlStatement in project jdbi by jdbi.
the class BindFactory method createForParameter.
@Override
public SqlStatementParameterCustomizer createForParameter(Annotation annotation, Class<?> sqlObjectType, Method method, Parameter param, int index, Type type) {
Bind b = (Bind) annotation;
String nameFromAnnotation = b == null ? Bind.NO_VALUE : b.value();
Optional<String> name = ParameterUtil.findParameterName(nameFromAnnotation, param);
return new SqlStatementParameterCustomizer() {
@Override
public void apply(SqlStatement<?> stmt, Object arg) throws SQLException {
QualifiedType<?> qualifiedType = qualifiedType(stmt.getConfig());
stmt.bindByType(index, arg, qualifiedType);
name.ifPresent(n -> stmt.bindByType(n, arg, qualifiedType));
}
@Override
public void warm(ConfigRegistry config) {
config.get(Mappers.class).findFor(qualifiedType(config));
}
private QualifiedType<?> qualifiedType(ConfigRegistry config) {
return QualifiedType.of(type).withAnnotations(config.get(Qualifiers.class).findFor(param));
}
};
}
use of org.jdbi.v3.core.statement.SqlStatement in project jdbi by jdbi.
the class PojoWarmingCustomizer method of.
public static SqlStatementParameterCustomizer of(Type pojoType, SqlStatementParameterCustomizer customizer) {
return new SqlStatementParameterCustomizer() {
@Override
public void apply(SqlStatement<?> stmt, Object arg) throws SQLException {
customizer.apply(stmt, arg);
}
@Override
public void warm(ConfigRegistry config) {
Arguments arguments = config.get(Arguments.class);
config.get(PojoTypes.class).findFor(pojoType).map(Stream::of).orElseGet(Stream::empty).map(PojoProperties::getProperties).map(Map::values).flatMap(Collection::stream).map(PojoProperty::getQualifiedType).forEach(arguments::prepareFor);
}
};
}
Aggregations