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

sqlg3.runtime.TypeMapper Maven / Gradle / Ivy

Go to download

SQLG is a preprocessor and a library that uses code generation to simplify writing JDBC code

There is a newer version: 3.1
Show newest version
package sqlg3.runtime;

import sqlg3.core.SQLGException;

import java.sql.CallableStatement;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;

/**
 * This class performs Java/SQL mapping for given class.
 */
public abstract class TypeMapper {

    public final Class cls;

    protected TypeMapper(Class cls) {
        this.cls = cls;
    }

    public int getResultSetColumns() {
        return 1;
    }

    public int getStatementParameters() {
        return 1;
    }

    /**
     * Fetches class instance from the result set.
     *
     * @param rs result set
     * @param index first column of result set
     * @return instance of mapped class fetched from result set
     */
    public abstract T fetch(ResultSet rs, int index) throws SQLException;

    /**
     * Sets the parameter for a prepared statement.
     *
     * @param stmt prepared statement
     * @param index parameter index
     * @param value value to set. If value is nullable you should provide this case too.
     */
    public abstract void set(PreparedStatement stmt, int index, T value) throws SQLException;

    protected final void noOut(Class cls) {
        throw new SQLGException("Out parameters of type " + cls.getCanonicalName() + " are not supported");
    }

    /**
     * Registers OUT parameter of mapped class for callable statement. By default this method throws
     * runtime exception. Override this method to use classes as OUT parameters.
     *
     * @param cs callable statement
     * @param index parameter index
     */
    public void register(CallableStatement cs, int index) throws SQLException {
        noOut(cls);
    }

    /**
     * Retrieves OUT parameter of mapped class from callable statement after execution.
     * By default this method throws runtime exception. Override this method to use classes as OUT parameters.
     *
     * @param cs callable statement
     * @param index parameter index
     */
    public T get(CallableStatement cs, int index) throws SQLException {
        noOut(cls);
        return null;
    }
}




© 2015 - 2024 Weber Informatics LLC | Privacy Policy