|
Hello,
I had a similar problem and these were my
alternatives:
1) Use CASE SQL _expression_ and return
true/false, ex:
2) Modify the setter/getter
methods of the boolean property like this:
In
my case, the second alternative was better choise.
Hope
this help.
</Firas>
From: Rick [mailto:[EMAIL PROTECTED] Sent: den 29 juni 2006 08:01 To: [email protected] Subject: RE: How do you map a Java boolean property to a VARCHAR(1) that contains 'Y' or 'N'? Comments
below… From: Jeff
Butler [mailto:[EMAIL PROTECTED] A custom type handler is the right way to do it.
Your code looks amazingly similar to the example for this exact problem in the
developer's guide :) (Great minds think
alike…) **What developers
guide? I just searched the
iBatis developer guide (the PDF file) for the string “TypeHandler” and it is not
in there. Is this a future
version of the developers guide? The one I downloaded on 6/16/2006 does not seem
to have this (or did I miss it). You could register the type handler globally so it would
always handle any VARCHAR to boolean transalation. **Nice idea. This app
handles all Booleans as VARCHAR(1) Y or N. This is what's shown in the developer's guide.
Specifying the type handler for a specific field in a result is fairly new - we
do need to get that into the documentation. I'll get to that tomorrow
(hopefully). ** Perhaps in the FAQ
as well. I am more than happy to update the FAQ. Jeff Butler
On 6/28/06, Rick <[EMAIL PROTECTED]>
wrote: I found the answer
(just by trial and error no documentation per se). Can you tell me if
there is a easier/better way? I created a custom type
handler and used it as follows:
<resultMap
id=
"contacts" class
="qcom.cas.mysourcej.poc.model.Contact" >
<result
property=
"name" column
="contact_name"
/>
<result
property=
"primaryContact" column ="primary_contact"
typeHandler=
"qcom.cas.commons.ibatis.typehandler.StringBooleanTypeHandler"
/>
</resultMap
> package
qcom.cas.commons.ibatis.typehandler; import
java.sql.CallableStatement; import
java.sql.PreparedStatement; import
java.sql.ResultSet; import
java.sql.SQLException; import
com.ibatis.sqlmap.engine.type.TypeHandler; public class
StringBooleanTypeHandler implements TypeHandler {
public void setParameter(PreparedStatement ps, int position, Object
value,
String jdbcType) throws SQLException {
Boolean bValue = (Boolean) value;
ps.setString(position, bValue.booleanValue() ? "Y" : "N");
}
public Object getResult(ResultSet rs, String name) throws SQLException
{
return valueOf(rs.getString(name));
}
public Object getResult(ResultSet rs, int position) throws SQLException
{
return valueOf(rs.getString(position));
}
public Object getResult(CallableStatement cs, int
position)
throws SQLException {
return valueOf(cs.getString(position));
}
public Object valueOf(String value) {
if (value.equals("Y")) {
return Boolean.TRUE;
} else {
return Boolean.FALSE;
}
}
public boolean equals(Object value1, String value2)
{
return valueOf(value2).equals(value1);
} } Can you tell me if
there is a easier/better way? From: Rick
[mailto: [EMAIL PROTECTED]] I
have a SQL map as follows:
<resultMap
id=
"contacts" class
="qcom.cas.mysourcej.poc.model.Contact" >
<result
property=
"name" column
="contact_name"
/>
<result
property=
"primaryContact" column ="primary_contact"
/>
</resultMap
> The
class Contact has a primaryContact field is boolean The
result set is from a column that is equal to 'Y' or 'N' in the
database. Is
there a way to map a boolean property (primitive) to a VARCHAR(1) NOT NULL
column (that has either a 'Y' or a 'N')? This is a legacy database and there
is no way I can change the table. I could change the
query. BTW
I am new to iBatis, and I got it talking to a legacy db. I also setup
relationships fairly easily. I did notice the
typeHandler attribute of resultMap but this is not documented in the dtd or user
documents. |
- RE: How do you map a Java boolean property to a VARCHAR(1) tha... Rick
- How do you map a Java boolean property to a VARCHAR(1) th... Rick
- RE: How do you map a Java boolean property to a VARCH... Rick
- Re: How do you map a Java boolean property to a V... Jeff Butler
- RE: How do you map a Java boolean property to... Rick
- RE: How do you map a Java boolean proper... Firas A.
- Re: How do you map a Java boolean proper... Jeff Butler
