On Sat, 15 Jan 2005 11:16:09 -0700, Clinton Begin
<[EMAIL PROTECTED]> wrote:
> Okay, I'm sick of typing out parameter map and result map stanzas, how

Would it be feasible to have a result map for just the unusual stuff?

> <select id="getPersonByID" parameterClass="int" resultClass="e.g.Person">
>     SELECT
>         PERSON_ID   AS   %id%,
>         FIRST_NAME AS   %firstName%,
>         LAST_NAME  AS   %lastName%,
>         BIRTH_DATE  AS   %birthDate,javaType=date,jdbcType=DATE%
>      FROM PERSON
>      WHERE PERSON_ID = #value#
> </select>

The only thing that is exceptional there is the birthDate field..other
than that, the default result map would be just fine.

I hate the idea of messing with the SQL. IMO, one of the reasons
people like SQL Maps is that the query language is untouched by the
framework. What I put in is what I get out (with the explicit
exception of dynamic SQL).

So, instead of mangling the SQL, maybe we could provide a way to keep
the SQL clean, and alter the result map instead. That way, instead of
needing a full result map, you would only need to explicity map the
exceptions.

In terms of the work involved for users, the impact is minimal - the
existing method will continue to work, and in the cases where all you
need is one property mapped differently, it is 3 lines in your xml
file.

...and we get the added benefit of knowing the that SQL remains "pure".

> 1) The SQL is less pure, and more mangled.  Although initially this
> looks bad, I think most people use the built-in logging or P6Spy to
> grab the real statements anyway.  Also, for initial SQL development,
> it doesn't reduce the ability for a database admin to write the SQL
> (or if it does in your case, you still have the option of an external
> <resultMap>).

Hmm, another idea. How about this:

<select id="getPersonByID" parameterClass="int" resultClass="e.g.Person">
  <result property="birthDate" column="BIRTH_DATE" javaType="date"
jdbcType="DATE" />
    SELECT
        PERSON_ID   AS   id,
        FIRST_NAME AS   firstName,
        LAST_NAME  AS   lastName,
        BIRTH_DATE  AS   birthDate
     FROM PERSON
     WHERE PERSON_ID = #value#
</select>

That might even work for tweaking your parameter mapping. :-)

> 2) Dynamic SQL performance may be slightly impacted (no more so than
> inline parameters, which is the only way to do dynamic SQL anyway).

Not sure how either of these approaches would impact that...

> 3) The paramter tokenization may get out of hand.  We already know we

I agree and think that avoiding that is important. Simpler is better.

Oh, and I also agree that collections suck, but I still like Vic in
spite of them. ;-)

Larry

Reply via email to