Есть ли лучший способ справиться с разбиением на страницы mybatis при использовании запроса union?Не рассматривайте это как сильный пример использования, а просто представляю мою актуальную проблему.
Мне нужно сделать объединение, чтобы получить записи из 2 разных таблиц.
Здесь проблема в том, что если я установлю размер страницы, например, 100, если у 10 учеников по 20 записей в каждой, тогда я получу только 100 записей, даже если есть 200 записей.И в приведенном ниже примере класса, когда я распечатаю количество записей, которое есть у каждого учащегося, я не увижу все записи.
Например -
<code>
with student AS (
select * from std (
select studentId, name, class, ROW_NUMBER() over (order by studentId) as paginationRank from Student
)std
where paginationRank > #{ _skipRows} and paginationRank <= ( #{_pageSize} *
(#{_page}+1))
)
select student.studentId, attendanceRegfields......Creditsfields....
from student left outer join
( select ..... from attendanceReg
union all
select .... from Credits ) all_records
on all_records.studentId = student.studentId
</code>
В моем элементе записи, если яполучить все студенческие записи
<code>
class MyItemWriter extends ItemWriter<Student>
{
write(List<student> studentRecords){
Map<String, List<Student>> studentRecordsMap =
studentRecords.stream().collect(groupby(e-> e.getStudentId()));
studentRecordsMap .forEach((key, studentRecords) -> process(stuedntRecords);
}
process(List<Student> studentRecords){
// here I am processing all records
}
}
</code>