IMHO this is a bad way or trying to reduce code.

Let me point out a few reasons :)

1.  Why use a map if you are only ever going to pass 1 string in.  That is
twice the amount of memory needed to object creation.

2.  You have moved database specific information into your java code.  I
think it is a good practice to have all sql in the maps.  I think it is much
more readable and easier to debug.  You java code will be littered with
map.get("SOME_COLUMN") calls.  Not clean in my opinion.

3.  As long as you keep the static table name string in your DAO layer you
should not run into SQL injection but I get scared every time I see the $$.

4.  Some one might correct me but I believe that using actual result classes
with result maps is more performant then always using maps.


Sorry to be so negative,  I just woke up :)

Nathan
On 2/28/07, Stefano Mancini <[EMAIL PROTECTED]> wrote:


Hi,

I've the following problem:

I want to read the rows of a generic table into a List of HashMaps using a
statement like this one

<select id="selectAll" remapResults="true" resultClass="java.util.HashMap"
parameterClass="java.util.Map">
    select * from $table$
</select>

If the table contains a column of type BLOB in the resulting map is
inserted an object of type oracle.sql.BLOB (I'm using oracle 10g), I would
like to have a byte[] in this case. I've inserted the following mapping

<typeHandler jdbcType="BLOB" javaType = "[B" callback="
com.ibatis.sqlmap.engine.type.BlobTypeHandlerCallback" />

in the SqlMap with no results (I've used "[B] as javaType because byte[]
isn't accepted).
Obviously if I use a resultMap with all the properties specified all works
fine, but it's no more general.

Any ideas ?



Reply via email to