在 MyBatis 中,要實現使用 UNION ALL 的分頁查詢,你需要遵循以下步驟:
以下是一個簡單的示例:
union_all_query.sql
的 SQL 文件,其中包含兩個 SELECT 語句,用 UNION ALL 連接:-- union_all_query.sql
SELECT * FROM table1
WHERE some_condition
LIMIT #{pageSize} OFFSET #{offset}
UNION ALL
SELECT * FROM table2
WHERE some_condition
LIMIT #{pageSize} OFFSET #{offset}
YourMapper.xml
)中,引入 union_all_query.sql
文件,并編寫一個名為 getUnionAllQueryResult
的映射方法:<!-- YourMapper.xml -->
<mapper namespace="com.example.yourpackage.YourMapper">
<resultMap id="yourResultMap" type="com.example.yourpackage.YourModel">
<!-- 定義你的結果映射 -->
</resultMap>
<select id="getUnionAllQueryResult" resultMap="yourResultMap">
<include refid="union_all_query"/>
</select>
</mapper>
getUnionAllQueryResult
方法,并傳入相應的參數:// YourService.java
public List<YourModel> getUnionAllQueryResult(int pageNum, int pageSize) {
int offset = (pageNum - 1) * pageSize;
Map<String, Object> params = new HashMap<>();
params.put("offset", offset);
params.put("pageSize", pageSize);
return yourMapper.getUnionAllQueryResult(params);
}
這樣,你就可以實現使用 UNION ALL 的分頁查詢了。請注意根據你的實際需求修改示例中的表名、條件和參數。