0

我在 mybatis 中有动态选择查询,如下所示:

<select id="genericSelect" parameterType="GenericQueryParameter" resultType="hashmap">
  SELECT <if test="selectMode != null">${selectMode}</if> ${selectPart}
  FROM ${fromPart}
  <where>
    <if test="fixedWherePart != null">${fixedWherePart}</if>
    <if test="wherePart != null">AND ${wherePart}</if>
    <if test="initialCondition != null and wherePart == null">AND ${initialCondition}</if>
  </where>
  <if test="groupByPart != null"> GROUP BY ${groupByPart}</if>
  <if test="havingPart != null"> HAVING ${havingPart}</if>
  <if test="order != null"> ORDER BY ${order}</if>
</select>

对我来说,在结果中对键进行哈希映射很重要,填充的是列号,而不是列名。是否有可能制作一些自定义处理程序或其他任何东西来做到这一点?

Mybatis 版本是 3.1.1,我正在使用映射器接口来处理查询。

4

1 回答 1

0

这在我想要的方式上是不可能的,所以我稍微改变了查询。首先,我selectPart改为array。现在我将查询的选择部分更改为:

<foreach collection="selectArray" item="selectElement" index="index" separator=", ">
  ${selectElement} COL${index+1}
</foreach>

现在我只是使用 alias 和indexvar 将元素放入 hashmap 中,并将 order 信息保留在查询的 select 部分中。

于 2013-01-09T17:03:00.890 回答