Search in sources :

Example 1 with SqlStatement

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));
        }
    };
}
Also used : SqlStatement(org.jdbi.v3.core.statement.SqlStatement) ConfigRegistry(org.jdbi.v3.core.config.ConfigRegistry) Bind(org.jdbi.v3.sqlobject.customizer.Bind) Mappers(org.jdbi.v3.core.mapper.Mappers) SqlStatementParameterCustomizer(org.jdbi.v3.sqlobject.customizer.SqlStatementParameterCustomizer)

Example 2 with SqlStatement

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);
        }
    };
}
Also used : SqlStatement(org.jdbi.v3.core.statement.SqlStatement) ConfigRegistry(org.jdbi.v3.core.config.ConfigRegistry) PojoProperties(org.jdbi.v3.core.mapper.reflect.internal.PojoProperties) Arguments(org.jdbi.v3.core.argument.Arguments) Collection(java.util.Collection) Stream(java.util.stream.Stream) SqlStatementParameterCustomizer(org.jdbi.v3.sqlobject.customizer.SqlStatementParameterCustomizer)

Aggregations

ConfigRegistry (org.jdbi.v3.core.config.ConfigRegistry)2 SqlStatement (org.jdbi.v3.core.statement.SqlStatement)2 SqlStatementParameterCustomizer (org.jdbi.v3.sqlobject.customizer.SqlStatementParameterCustomizer)2 Collection (java.util.Collection)1 Stream (java.util.stream.Stream)1 Arguments (org.jdbi.v3.core.argument.Arguments)1 Mappers (org.jdbi.v3.core.mapper.Mappers)1 PojoProperties (org.jdbi.v3.core.mapper.reflect.internal.PojoProperties)1 Bind (org.jdbi.v3.sqlobject.customizer.Bind)1