All Downloads are FREE. Search and download functionalities are using the official Maven repository.

ninja.cero.sqltemplate.core.parameter.MapParameter Maven / Gradle / Ivy

There is a newer version: 2.1.0
Show newest version
package ninja.cero.sqltemplate.core.parameter;

import ninja.cero.sqltemplate.core.util.Jsr310JdbcUtils;
import org.springframework.jdbc.core.namedparam.AbstractSqlParameterSource;

import java.time.ZoneId;
import java.util.Map;

/**
 * {@link org.springframework.jdbc.core.namedparam.SqlParameterSource} implementation that holds a given Map of parameters.
 * Supports {@link java.time.LocalDateTime} and {@link java.time.LocalDate} of JSR-310.
 */
public class MapParameter extends AbstractSqlParameterSource {
    /** the Map holding parameters */
    protected Map values;

    /** ZoneId for OffsetDateTime and ZonedDateTime */
    protected ZoneId zoneId;

    /**
     * Create a new MapParameter.
     * @param values the Map holding parameters
     * @param zoneId zoneId
     */
    public MapParameter(Map values, ZoneId zoneId) {
        this.values = values;
        this.zoneId = zoneId;
    }

    /**
     * {@inheritDoc}
     */
    @Override
    public boolean hasValue(String paramName) {
        return values.containsKey(paramName);
    }

    /**
     * {@inheritDoc}
     */
    @Override
    public Object getValue(String paramName) {
        Object value = values.get(paramName);
        if (value == null) {
            return null;
        }

        return Jsr310JdbcUtils.convertIfNecessary(value, zoneId);
    }

    @Override
    public int getSqlType(String paramName) {
        int sqlType = super.getSqlType(paramName);
        if (sqlType != TYPE_UNKNOWN) {
            return sqlType;
        }
        Object value = values.get(paramName);
        if (value == null) {
            return TYPE_UNKNOWN;
        }

        return Jsr310JdbcUtils.getSqlType(value.getClass());
    }
}




© 2015 - 2024 Weber Informatics LLC | Privacy Policy