ibatis-user-java mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Sundar Sankaranarayanan" <Sundar.Sankaranaraya...@phoenix.edu>
Subject RE: how to create custom TypeHandlerCallback to trim stringwhitespace
Date Fri, 18 Jan 2008 22:40:22 GMT
Hi,
I had posted a way to insert a string array into oracle table. I am not
sure if that is gonna help you, but somehow feel you could use the
approach.

public void setParameter(ParameterSetter setter, Object parameter)
throws SQLException {

if (parameter instanceof ArrayList) {
ArrayList arr = (ArrayList)parameter;
Statement stmt = setter.getPreparedStatement();
Connection conn = stmt.getConnection();
ArrayDescriptor desc = ArrayDescriptor.createDescriptor("STRARRAY",
conn); // The STRARRAY is the name of the oracle type created as the
instance of table.
parameter = new ARRAY(desc, conn,arr.toArray());
}

setter.setObject(parameter);
}

The full class is available in the user list for subject  "Call stored
procedure with reference to a table as the input param.".  I feel that
your current type handler is not able to distinguish between char array
and string and you might wanna use char[](jdbctype=ARRAY) as a type in
your type handler and remove the last char of the array that comes out
as an output in the typehandler code. Not sure if it might work, but
feel that it could be well be tried out.

-S
-----Original Message-----
From: novotny [mailto:novotny@gridsphere.org] 
Sent: Friday, January 18, 2008 3:23 PM
To: user-java@ibatis.apache.org
Subject: RE: how to create custom TypeHandlerCallback to trim
stringwhitespace



Well the database designer chose to use CHAR(6), so I wouldn't have this
problem if it were VARCHAR but since it's CHAR, I believe the informix
driver pads it with extra spacing hence the need for some kind of custom
handler which I can't get to work...

Thanks, Jason



Kezerashvili, Denis wrote:
> 
> I think the problem may be that you are specifying jdbsType="CHAR", 
> should not it be jdbsType="VARCHAR". Aren't you dealing with strings 
> not just single characters. The call back is never invoked, since you 
> get back a VARCHAR not CHAR.
> 
> Denis
> -----Original Message-----
> From: novotny [mailto:novotny@gridsphere.org]
> Sent: Friday, January 18, 2008 2:02 PM
> To: user-java@ibatis.apache.org
> Subject: how to create custom TypeHandlerCallback to trim string 
> whitespace
> 
> 
> Hi,
> 
>  I'm using an informix database and querying for a map containing 
> string keys and integer values. The keys are stored as type CHAR in 
> the database and normally when I get them back they contain extar 
> whitespace. I'm trying to create a custom handler like so:
> 
> public class StringTypeHandlerCallback implements TypeHandlerCallback 
> {
> 
> 
>     public void setParameter(ParameterSetter parameterSetter, Object 
> o) throws SQLException {
>         parameterSetter.setString(((String)o).trim());
>     }
> 
>     public Object getResult(ResultGetter resultGetter) throws 
> SQLException {
>         return resultGetter.getString().trim();
>     }
> 
>     public Object valueOf(String s) {
>         return s.trim();
>     }
> }
> 
> and I added
> 
> <typeHandler callback="StringTypeHandlerCallback" javaType="string"
> jdbcType="CHAR"/>
> 
> but it doesn't seem to work-- the strings still have the whitespace.
> 
> Here was my query:
> 
> Map<String, Integer> m = sqlMapClient.queryForMap(QUERY, qwest, 
> "sm_qwest", "tm_id");
> 
> Any help is greatly appreciated!
> 
> Thanks, Jason
> --
> View this message in context:
> http://www.nabble.com/how-to-create-custom-TypeHandlerCallback-to-trim
> -s tring-whitespace-tp14956784p14956784.html
> Sent from the iBATIS - User - Java mailing list archive at Nabble.com.
> 
> 

--
View this message in context:
http://www.nabble.com/how-to-create-custom-TypeHandlerCallback-to-trim-s
tring-whitespace-tp14956784p14961326.html
Sent from the iBATIS - User - Java mailing list archive at Nabble.com.


Mime
View raw message