com.ibatis.sqlmap.client.extensions
Interface TypeHandlerCallback

All Known Implementing Classes:
BlobTypeHandlerCallback, ClobTypeHandlerCallback

public interface TypeHandlerCallback

A simple interface for implementing custom type handlers.

Using this interface, you can implement a type handler that will perform customized processing before parameters are set on a PreparedStatement and after values are retrieved from a ResultSet. Using a custom type handler you can extend the framework to handle types that are not supported, or handle supported types in a different way. For example, you might use a custom type handler to implement proprietary BLOB support (e.g. Oracle), or you might use it to handle booleans using "Y" and "N" instead of the more typical 0/1.

EXAMPLE

Here's a simple example of a boolean handler that uses "Yes" and "No".

 public class YesNoBoolTypeHandlerCallback implements TypeHandlerCallback {
 

private static final String YES = "Yes"; private static final String NO = "No";

public Object getResult(ResultGetter getter) throws SQLException { String s = getter.getString(); if (YES.equalsIgnoreCase(s)) { return new Boolean (true); } else if (NO.equalsIgnoreCase(s)) { return new Boolean (false); } else { throw new SQLException ("Unexpected value " + s + " found where "+YES+" or "+NO+" was expected."); } }

public void setParameter(ParameterSetter setter, Object parameter) throws SQLException { boolean b = ((Boolean)parameter).booleanValue(); if (b) { setter.setString(YES); } else { setter.setString(NO); } }

public Object valueOf(String s) { if (YES.equalsIgnoreCase(s)) { return new Boolean (true); } else if (NO.equalsIgnoreCase(s)) { return new Boolean (false); } else { throw new SQLException ("Unexpected value " + s + " found where "+YES+" or "+NO+" was expected."); } }

}


Method Summary
 java.lang.Object getResult(ResultGetter getter)
          Performs processing on a value before after it has been retrieved from a ResultSet.
 void setParameter(ParameterSetter setter, java.lang.Object parameter)
          Performs processing on a value before it is used to set the parameter of a PreparedStatement.
 java.lang.Object valueOf(java.lang.String s)
          Casts the string representation of a value into a type recognized by this type handler.
 

Method Detail

setParameter

public void setParameter(ParameterSetter setter,
                         java.lang.Object parameter)
                  throws java.sql.SQLException
Performs processing on a value before it is used to set the parameter of a PreparedStatement.

Parameters:
setter - The interface for setting the value on the PreparedStatement.
parameter - The value to be set.
Throws:
java.sql.SQLException - If any error occurs.

getResult

public java.lang.Object getResult(ResultGetter getter)
                           throws java.sql.SQLException
Performs processing on a value before after it has been retrieved from a ResultSet.

Parameters:
getter - The interface for getting the value from the ResultSet.
Returns:
The processed value.
Throws:
java.sql.SQLException - If any error occurs.

valueOf

public java.lang.Object valueOf(java.lang.String s)
Casts the string representation of a value into a type recognized by this type handler. This method is used to translate nullValue values into types that can be appropriately compared. If your custom type handler cannot support nullValues, or if there is no reasonable string representation for this type (e.g. File type), you can simply return the String representation as it was passed in. It is not recommended to return null, unless null was passed in.

Parameters:
s - A string representation of a valid value for this type.
Returns:
One of the following:
  1. the casted repersentation of the String value,
  2. the string as is,
  3. null, only if null was passed in.