|
| 1 | +package lhg142; |
| 2 | + |
| 3 | +import org.junit.jupiter.api.Test; |
| 4 | +import org.mybatis.dynamic.sql.render.RenderingStrategies; |
| 5 | +import org.mybatis.dynamic.sql.select.SelectDSL; |
| 6 | +import org.mybatis.dynamic.sql.select.render.SelectStatementProvider; |
| 7 | + |
| 8 | +import java.util.Objects; |
| 9 | + |
| 10 | +import static issues.gh105.PersonDynamicSqlSupport.lastName; |
| 11 | +import static lhg142.MyMarkDynamicSqlSupport.*; |
| 12 | +import static org.assertj.core.api.Assertions.assertThat; |
| 13 | +import static org.mybatis.dynamic.sql.SqlBuilder.*; |
| 14 | + |
| 15 | +public class Issue142Test { |
| 16 | + |
| 17 | + @Test |
| 18 | + public void LimitWithSubqueries() { |
| 19 | + Page page = new Page(100L, 10L); |
| 20 | + SelectStatementProvider selectStatement = select(id,updateTime.as("mutime"),createTime.as("mctime")).from(myMark) |
| 21 | + .where(id, isLessThanOrEqualTo( |
| 22 | + select(id).from(myMark) |
| 23 | + .orderBy(updateTime.descending(), createTime.descending()) |
| 24 | + .limit(1L) |
| 25 | + .offset(page.getOffset()) |
| 26 | + )).orderBy(sortColumn("mutime").descending(), sortColumn("mctime").descending()) |
| 27 | + .limit(page.getSize()).offset(0L).build() |
| 28 | + .render(RenderingStrategies.MYBATIS3); |
| 29 | + String expected = "select id, update_time as mutime, create_time as mctime from my_mark " + |
| 30 | + "where id <= (select id from my_mark order by update_time DESC, create_time DESC limit #{parameters._limit1} offset #{parameters._offset2})" + |
| 31 | + " order by mutime DESC, mctime DESC limit #{parameters._limit3} offset #{parameters._offset4}"; |
| 32 | + assertThat(selectStatement.getSelectStatement()).isEqualTo(expected); |
| 33 | + assertThat(selectStatement.getParameters().get("_limit1")).isEqualTo(1L); |
| 34 | + assertThat(selectStatement.getParameters().get("_offset2")).isEqualTo(100L); |
| 35 | + assertThat(selectStatement.getParameters().get("_limit3")).isEqualTo(10L); |
| 36 | + assertThat(selectStatement.getParameters().get("_offset4")).isEqualTo(0L); |
| 37 | + } |
| 38 | +} |
0 commit comments