ibatis-user-java mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Nils Winkler" <n...@nilswinkler.com>
Subject Re: CHAR to BOOLEAN - Custom Type Handler
Date Tue, 07 Mar 2006 07:48:57 GMT
Take a look at the example in the Wiki:

http://opensource2.atlassian.com/confluence/oss/display/IBATIS/How+do+I+use+a+Custom+Type+Handler+with+complex+property+or+Type+Safe+Enumeration

I know that the example is for Type Safe Enums or Java 5 enums, but it
should easily be adaptable to your case. Please note how null values are
handled in the example, not sure if this is an issue for you.

I'm pretty sure that some JDBC drivers (at least Oracle) can correctly
convert values like "Y/N" or "1/0" to Boolean if read with
ResultSet.getBoolean().

Nils

On Mon, 06 Mar 2006 16:57:31 +0100, "Guido García Bernardo"
<ggb275@tid.es> said:
> Ted Schrader escribió:
> > Hi Guido,
> >
> > I'm not sure about custom type handlers, but doing something like this
> > in your query might lead to a simpler solution:
> >
> > SELECT CASE WHEN BOOLCOL = 'T' THEN 'true' ELSE 'false' END AS BOOLFLAG
> > FROM MY_TABLE
> >
> > I'm guessing here, but perhaps "true" and "false" can be mapped
> > directly by iBATIS to a boolean or java.lang.Boolean.  I wish I had
> > the time to check it out myself.
> >   
> That would be great, but unfortunately it raises an exception:
> 
> Caused by: java.lang.NumberFormatException: For input string: "true"
> 
> The custom type handler I am using (it is working but I am not sure it is
> correct):
> 
> public class BooleanTypeHandler extends BaseTypeHandler {
> 
> 	public void setParameter(PreparedStatement ps, int arg1, Object arg2, String arg3) throws
SQLException {
> 	}
> 
> 	public Object getResult(ResultSet rs, String columnName) throws SQLException {
> 		return Boolean.valueOf( rs.getString( columnName ) );
> 	}
> 
> 	public Object getResult(ResultSet rs, int columnIndex) throws SQLException {
> 		return Boolean.valueOf( rs.getString( columnIndex ) );
> 	}
> 
> 	public Object getResult(CallableStatement cs, int columnIndex) throws SQLException {
> 		return null;
> 	}
> 
> 	public Object valueOf(String arg) {		
> 		return Boolean.valueOf( arg );		
> 	}
> }
> 
> It would be very useful to include some common type handlers with iBatis
> in order to not reinvent the wheel every time.
> 
> Thank you.
> 
> > It's an avenue to try.
> >
> > Ted
> >
> > On 06/03/06, Guido García Bernardo <ggb275@tid.es> wrote:
> >   
> >> Hi,
> >>
> >> I am triyng to write a custom type handler that allows me to map a
> >> CHAR(1) into a boolean.
> >> Anyone could send me a simple example to fill the following methods?
> >> google doesn't help a lot...
> >>
> >> Thank you very much.
> >> PD. Maybe there is a simpler way to achieve the conversion.
> >>
> >> public class CharTypeHandler extends BaseTypeHandler {
> >>     public void setParameter(PreparedStatement arg0, int arg1, Object
> >> arg2, String arg3) throws SQLException {
> >>         // TODO Auto-generated method stub
> >>     }
> >>
> >>     public Object getResult(ResultSet arg0, String arg1) throws
> >> SQLException {
> >>         // TODO Auto-generated method stub
> >>     }
> >>
> >>     public Object getResult(ResultSet arg0, int arg1) throws SQLException {
> >>         // TODO Auto-generated method stub
> >>     }
> >>
> >>     public Object getResult(CallableStatement arg0, int arg1) throws
> >> SQLException {
> >>         // TODO Auto-generated method stub
> >>     }
> >>
> >>     public Object valueOf(String arg0) {
> >>         // TODO Auto-generated method stub
> >>     }
> >> }
> >>     
> 
--
==================================
nils@nilswinkler.com


Mime
View raw message