package com.querydsl.sql; import java.util.List; import org.junit.Test; import org.junit.experimental.categories.Category; import com.google.common.collect.Lists; import com.querydsl.core.QueryMetadata; import com.querydsl.core.QueryModifiers; import com.querydsl.core.support.QueryMixin; import com.querydsl.core.testutil.ReportingOnly; import com.querydsl.sql.domain.QEmployee; @Category(ReportingOnly.class) public class PaginationTest { private String serialize(QueryMetadata metadata, SQLTemplates templates) { SQLSerializer serializer = new SQLSerializer(new Configuration(templates)); serializer.serialize(metadata, false); return serializer.toString(); } @Test public void test() { List<SQLTemplates> list = Lists.newArrayList(); list.add(new CUBRIDTemplates()); list.add(new DerbyTemplates()); list.add(new H2Templates()); list.add(new HSQLDBTemplates()); list.add(new MySQLTemplates()); list.add(new OracleTemplates()); // inner query list.add(new PostgreSQLTemplates()); list.add(new SQLiteTemplates()); list.add(new SQLServerTemplates()); list.add(new SQLServer2005Templates()); // inner query list.add(new SQLServer2012Templates()); list.add(new TeradataTemplates()); // qualify for (SQLTemplates templates : list) { QEmployee employee = QEmployee.employee; QueryMixin<?> query = new QueryMixin<Void>(); query.from(employee); query.orderBy(employee.firstname.asc()); query.setProjection(employee.id); System.out.println(templates.getClass().getSimpleName()); System.out.println(); // limit query.restrict(QueryModifiers.limit(10L)); System.out.println("* limit"); System.out.println(serialize(query.getMetadata(), templates)); System.out.println(); if (!templates.getClass().equals(SQLServerTemplates.class)) { // offset query.restrict(QueryModifiers.offset(10L)); System.out.println("* offset"); System.out.println(serialize(query.getMetadata(), templates)); System.out.println(); // limit and offset query.restrict(new QueryModifiers(10L, 10L)); System.out.println("* limit and offset"); System.out.println(serialize(query.getMetadata(), templates)); System.out.println(); } } } }