You can use a type handler and implement java.sql.Array. Example:

1st: abstract superclass as adapter

public abstract class SqlArrayAdapter
implements Array
{
        public Object getArray() throws SQLException
        {
                // Auto-generated method stub
                return null;
        }
        
        public Object getArray(long index, int count) throws SQLException
        {
                // Auto-generated method stub
                return null;
        }
        
        public Object getArray(long index, int count, Map<String, Class< ? >>
map) throws SQLException
        {
                // Auto-generated method stub
                return null;
        }
        
        public Object getArray(Map<String, Class< ? >> map) throws SQLException
        {
                // Auto-generated method stub
                return null;
        }
        
        public int getBaseType() throws SQLException
        {
                // Auto-generated method stub
                return 0;
        }
        
        public String getBaseTypeName() throws SQLException
        {
                // Auto-generated method stub
                return null;
        }
        
        public ResultSet getResultSet() throws SQLException
        {
                // Auto-generated method stub
                return null;
        }
        
        public ResultSet getResultSet(long index, int count) throws SQLException
        {
                // Auto-generated method stub
                return null;
        }
        
        public ResultSet getResultSet(long index, int count, Map<String, Class<
? >> map) throws SQLException
        {
                // Auto-generated method stub
                return null;
        }
        
        public ResultSet getResultSet(Map<String, Class< ? >> map) throws
SQLException
        {
                // Auto-generated method stub
                return null;
        }
}

2nd: implementation of java.sql.Array for use with int[] or
Collection<Integer>

public class IntArray
extends SqlArrayAdapter
{
        private static final Integer[] emptyArray = new Integer[0];
        
        private int[] array;
        
        public IntArray(int[] array)
        {
                if (array == null)
                {
                        throw new IllegalArgumentException("parameter array 
should not be null");
                }
                this.array = array;
        }
        
        public IntArray(Collection<Integer> set)
        {
                if (set == null)
                {
                        throw new IllegalArgumentException("parameter set 
should not be null");
                }
                Integer[] keys = set.toArray(emptyArray);

                this.array = new int[keys.length];
                for (int i = 0; i < keys.length; ++i)
                {
                        Integer key = keys[i];
                        this.array[i] = key.intValue();
                }
        }
        
        @Override
        public int getBaseType()
//      throws SQLException
        {
                return Types.INTEGER;
        }

        /**
         * This method is called by driver ver. 8 but not by ver. 7.
         */
        @Override
        public String getBaseTypeName()
//      throws SQLException
        {
                return "int4";
        }
        
        /**
         * This method is called by both drivers ver. 8 and 7.
         */
        @Override
        public String toString()
        {
                String result = "{";
                for (int i = 0; i < this.array.length; ++i)
                {
                        if (i > 0)
                        {
                                result += ",";
                        }
                        result += this.array[i];
                }
                result += "}";
                return result;
        }
        
        public void free()
//      throws SQLException
        {
                this.array = null;
        }
}

3rd: implementation of TypeHandlerCallback

public class IntArrayTypeHandler
implements TypeHandlerCallback
{
        public void setParameter(ParameterSetter setter, Object parameter)
        throws SQLException
        {
                Collection<Integer> keys = (Collection<Integer>) parameter;
                IntArray intArray = new IntArray(keys);
                setter.setArray(intArray);
        }
        
        public Object getResult(ResultGetter getter)
        throws SQLException
        {
                Array array = getter.getArray();
                return array;
        }
        
        public Object valueOf(String string)
        {
                return string;
        }
}

4th: add the type handler to your configuration
        <typeAlias alias="IntArrayTypeHandler"
type="com.asci.common.ibatis.IntArrayTypeHandler" />

5th: SQL map

<select id="selectFahrgastById" parameterClass="map" resultMap="...">
        SELECT
                k.id,
                ...
        FROM kunden AS k
        WHERE k.id = ANY (#fahrgastIds,handler=IntArrayTypehandler#)
</select>

6th: DAO

public List<Fahrgast> selectFahrgastById(Set<Integer> fahrgastIds)
{
        HashMap<String, Object> params = new HashMap<String, Object>();
        params.put("fahrgastIds", fahrgastIds);
        List<Fahrgast> list = getSqlMapClientTemplate().queryForList(
                "datenerfassung.selectFahrgastById", params);
        return list;
}

jishnu123 schrieb:
> 
>    Hai,
> 
>          I have to tried insertion of array feild in postgres database using
> spring mvc with iBatis.I got two lines error ...like 
> 
>                                 Error as follows...
> 
> 
> [org.springframework.beans.factory.xml.XmlBeanDefinitionReader] - <Loading
> XML bean definitions from class path resource
> [org/springframework/jdbc/support/sql-error-codes.xml]>
>  [org.springframework.jdbc.support.SQLErrorCodesFactory] - <SQLErrorCodes
> loaded: [DB2, Derby, H2, HSQL, Informix, MS-SQL, MySQL, Oracle, PostgreSQL,
> Sybase]>
> 
> 
>    Its urgent ....Please help me........Any one has an idea  please  reply
> immediately otherwise sent to my emaild id rjis...@gmail.com 
>       
> 


---------------------------------------------------------------------
To unsubscribe, e-mail: user-java-unsubscr...@ibatis.apache.org
For additional commands, e-mail: user-java-h...@ibatis.apache.org

Reply via email to