0

この拡張 ResultMap 用に、rowNumber と totalRows の 2 つのフィールドを追加して作成します。はい、これで行数の合計が得られましたが、結果マップのすべてのオブジェクトに保存されます。

<resultMap id="BaseResultMapPagination" type="com.example.emaildto.EmailScheduleDTO" extends="BaseResultMap">
  <result property="rowNumber" column="row_number"/>
  <result property="totalRows" column="total_count"/>
</resultMap>
<select id="selectByExamplePagination" resultMap="BaseResultMapPagination" parameterType="com.example.emailservice.model.EmailScheduleCriteria">
WITH t as (
    select row_number() OVER(<include refid="orderByPagination"/>) as row_number, 
    count(*) OVER () as total_count,
    * from EmailSchedule t
     <if test="_parameter != null" >
         <include refid="Example_Where_Clause" />
     </if>
)
select * from t where row_number &gt;= #{pageInfo.startRow} AND row_number &lt; #{pageInfo.endRow}
order by row_number ASC
</select>

どうすればこれを回避できますか?

4

1 に答える 1

0

いいえ、同じクエリ内ではありません。は<resultMap/>、SELECT ステートメントから返された各レコードの各エントリに 2 つの列を追加しています。これが返されるものだからです。返された行の総数を取得するには、代わりに 2 番目のクエリを起動するか、返されたコレクションのサイズを取得します。

于 2011-05-03T12:17:08.087 に答える