diff --git a/src/main/java/org/mybatis/dynamic/sql/select/QueryExpressionDSL.java b/src/main/java/org/mybatis/dynamic/sql/select/QueryExpressionDSL.java index b223e4c49..59b36c359 100644 --- a/src/main/java/org/mybatis/dynamic/sql/select/QueryExpressionDSL.java +++ b/src/main/java/org/mybatis/dynamic/sql/select/QueryExpressionDSL.java @@ -1,5 +1,5 @@ /* - * Copyright 2016-2020 the original author or authors. + * Copyright 2016-2021 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -251,10 +251,18 @@ public UnionBuilder unionAll() { } public SelectDSL orderBy(SortSpecification...columns) { + return orderBy(Arrays.asList(columns)); + } + + public SelectDSL orderBy(Collection columns) { return QueryExpressionDSL.this.orderBy(columns); } public GroupByFinisher groupBy(BasicColumn...columns) { + return groupBy(Arrays.asList(columns)); + } + + public GroupByFinisher groupBy(Collection columns) { return QueryExpressionDSL.this.groupBy(columns); } @@ -410,6 +418,10 @@ public JoinSpecificationStarter fullJoin(Buildable joinTable, Strin } public GroupByFinisher groupBy(BasicColumn...columns) { + return groupBy(Arrays.asList(columns)); + } + + public GroupByFinisher groupBy(Collection columns) { return QueryExpressionDSL.this.groupBy(columns); } @@ -422,6 +434,10 @@ public UnionBuilder unionAll() { } public SelectDSL orderBy(SortSpecification...columns) { + return orderBy(Arrays.asList(columns)); + } + + public SelectDSL orderBy(Collection columns) { return QueryExpressionDSL.this.orderBy(columns); } @@ -440,6 +456,10 @@ public SelectDSL.FetchFirstFinisher fetchFirst(long fetchFirstRows) { public class GroupByFinisher implements Buildable { public SelectDSL orderBy(SortSpecification...columns) { + return orderBy(Arrays.asList(columns)); + } + + public SelectDSL orderBy(Collection columns) { return QueryExpressionDSL.this.orderBy(columns); } diff --git a/src/test/java/examples/simple/PersonMapperTest.java b/src/test/java/examples/simple/PersonMapperTest.java index e094a93e7..b3847f896 100644 --- a/src/test/java/examples/simple/PersonMapperTest.java +++ b/src/test/java/examples/simple/PersonMapperTest.java @@ -25,6 +25,7 @@ import org.apache.ibatis.transaction.jdbc.JdbcTransactionFactory; import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.Test; +import org.mybatis.dynamic.sql.SortSpecification; import org.mybatis.dynamic.sql.delete.DeleteDSLCompleter; import org.mybatis.dynamic.sql.delete.render.DeleteStatementProvider; import org.mybatis.dynamic.sql.insert.render.GeneralInsertStatementProvider; @@ -38,6 +39,7 @@ import java.sql.Connection; import java.sql.DriverManager; import java.util.ArrayList; +import java.util.Collection; import java.util.Date; import java.util.List; import java.util.Objects; @@ -251,6 +253,25 @@ void testFirstNameIn() { } } + @Test + void testOrderByCollection() { + Collection orderByColumns = new ArrayList<>(); + orderByColumns.add(firstName); + + try (SqlSession session = sqlSessionFactory.openSession()) { + PersonMapper mapper = session.getMapper(PersonMapper.class); + + List rows = mapper.select(c -> c + .where(firstName, isIn("Fred", "Barney")) + .orderBy(orderByColumns) + ); + + assertThat(rows).hasSize(2); + assertThat(rows.get(0).getLastName().getName()).isEqualTo("Rubble"); + assertThat(rows.get(1).getLastName().getName()).isEqualTo("Flintstone"); + } + } + @Test void testDelete() { try (SqlSession session = sqlSessionFactory.openSession()) { diff --git a/src/test/java/org/mybatis/dynamic/sql/select/SelectStatementTest.java b/src/test/java/org/mybatis/dynamic/sql/select/SelectStatementTest.java index f651862d5..571caf9a8 100644 --- a/src/test/java/org/mybatis/dynamic/sql/select/SelectStatementTest.java +++ b/src/test/java/org/mybatis/dynamic/sql/select/SelectStatementTest.java @@ -21,6 +21,7 @@ import static org.mybatis.dynamic.sql.SqlBuilder.*; import java.sql.JDBCType; +import java.util.ArrayList; import java.util.Collection; import java.util.Collections; import java.util.Date; @@ -29,6 +30,7 @@ import org.junit.jupiter.api.Test; import org.mybatis.dynamic.sql.Callback; +import org.mybatis.dynamic.sql.SortSpecification; import org.mybatis.dynamic.sql.SqlColumn; import org.mybatis.dynamic.sql.SqlTable; import org.mybatis.dynamic.sql.render.RenderingStrategies; @@ -176,6 +178,25 @@ void testOrderByMultipleColumns() { ); } + @Test + void testOrderByMultipleColumnsWithCollection() { + Collection orderByColumns = new ArrayList<>(); + orderByColumns.add(column2.descending()); + orderByColumns.add(column1); + + SelectStatementProvider selectStatement = select(column1.as("A_COLUMN1"), column2) + .from(table, "a") + .orderBy(orderByColumns) + .build() + .render(RenderingStrategies.MYBATIS3); + + String expectedFullStatement = "select a.column1 as A_COLUMN1, a.column2 " + + "from foo a " + + "order by column2 DESC, column1"; + + assertThat(selectStatement.getSelectStatement()).isEqualTo(expectedFullStatement); + } + @Test void testDistinct() { Date d = new Date(); pFad - Phonifier reborn

Pfad - The Proxy pFad of © 2024 Garber Painting. All rights reserved.

Note: This service is not intended for secure transactions such as banking, social media, email, or purchasing. Use at your own risk. We assume no liability whatsoever for broken pages.


Alternative Proxies:

Alternative Proxy

pFad Proxy

pFad v3 Proxy

pFad v4 Proxy