Intended to return account address using account ID, which uses Spring Stored Procedure class I have not used Springs stored procedure class before to return data and I was hoping someone would be able to check this for me.. 

If it will A. Return data, B. Can be improved. C. If I wanted to return multiple rows how would this need to be changed?

public class AccountAddress extends StoredProcedure implements DAOConstants{

    private static final String STOREDPROC = "storedProc";
    private static final String CURSOR = "cursor";

    public AccountAddress() {
        super(Config.getJdbcTemplate, STOREDPROC);
        declareParameter(new SqlParameter("accountID", OracleTypes.VARCHAR);
        declareParameter(new SqlOutParameter(CURSOR,OracleTypes.CURSOR, new AccountAddressMapper());
        setFunction(false);
        compile();
    }

    public List&lt;String&gt; getAccountAddress(String accountId) {
        Map&lt;String,Object&gt; params = new HashMap&lt;~&gt;();
        Map&lt;String,Object&gt; results = new HashMap&lt;~&gt;();
        List&lt;String&gt; data = new LinkedList&lt;~&gt;();
        try{
            params.put("accountId",accountId);
            results = execute(params);
            data = (List&lt;String&gt;) results.get(0);
        } catch (DataAccessException e) {
            // log errors  
        }
        return data;
    }

    public class AccountAddressMapper implements RowMapper&lt;List&lt;String&gt;&gt; {
        @Override
        public List&lt;String&gt; mapRow(Resultset rs, int i) throws SQLException{
            List&lt;String&gt; data = new ArrayList&lt;~&gt;();
            data.add(rs.getString(4));
            data.add(rs.getString(5));
            data.add(rs.getString(6));
            data.add(rs.getString(7));
            data.add(rs.getString(8));
            return data;
        }
    }
}
As @Pimgd mentioned in his answer: You are setting defaults just to overwrite them. this sounds like you are not certain what is going to happen in your code and you want to 'make sure'. It's better to read your code over a few times and make sure you know what will happen, rather than set values you won't need. To another developer it will sound like there is a situation where you will need the results map you assigned.


Don't declare parameters (with defaults) if you don't use them outside of the scope you need them in. when a method grows, the distance between the parameter (at top of try) and the place it gets used grows, making it more likely that it will get reused (bad) or that it gets left behind because developers don't notice it isn't used anymore.
Use the exception, not just to report an error. either return null or return an empty List, whichever you want. (or if you dislike return statements in a catch, set the data field to null/empty list)
If you are going to return the dataset without mutation, why not return it straight away?


I would suggest:

public List&lt;String&gt; getAccountAddress(String accountId) {
    try{
        Map&lt;String,Object&gt; params.put("accountId",accountId);
        Map&lt;String,Object&gt; results = execute(params);
        return (List&lt;String&gt;) results.get(0);
    } catch (DataAccessException e) {
        // log errors 
        return new LinkedList&lt;String&gt;();       
    }
}