Browse Source

fix: #I11CO9

zzhihong 5 năm trước cách đây
mục cha
commit
cb799db525

+ 3 - 0
mybatis-plus-extension/src/main/java/com/baomidou/mybatisplus/extension/plugins/PaginationInterceptor.java

@@ -135,6 +135,9 @@ public class PaginationInterceptor extends AbstractSqlParserHandler implements I
             orderByElements = new ArrayList<>(orderList.size());
         }
         for (OrderItem item : orderList) {
+            if (StringUtils.isEmpty(item.getColumn())) {
+                continue;
+            }
             OrderByElement element = new OrderByElement();
             element.setExpression(new Column(item.getColumn()));
             element.setAsc(item.isAsc());

+ 17 - 0
mybatis-plus-extension/src/test/java/com/baomidou/mybatisplus/extension/plugins/pagination/SelectBodyToPlainSelectTest.java

@@ -50,6 +50,10 @@ class SelectBodyToPlainSelectTest {
         order.setAsc(true);
         order.setColumn("column");
         orderItems.add(order);
+        OrderItem orderEmptyColumn = new OrderItem();
+        orderEmptyColumn.setAsc(false);
+        orderEmptyColumn.setColumn("");
+        orderItems.add(orderEmptyColumn);
         page.setOrders(orderItems);
     }
 
@@ -88,4 +92,17 @@ class SelectBodyToPlainSelectTest {
         assertThat(actualSqlUnionAll).isEqualTo("SELECT * FROM test WHERE 1 = 1 UNION ALL SELECT * FROM test2 WHERE 1 = 1 ORDER BY column");
     }
 
+    @Test
+    void testPaginationInterceptorOrderByEmptyColumnFix() {
+        String actualSql = PaginationInterceptor
+            .concatOrderBy("select * from test", page);
+
+        assertThat(actualSql).isEqualTo("SELECT * FROM test ORDER BY column");
+
+        String actualSqlWhere = PaginationInterceptor
+            .concatOrderBy("select * from test where 1 = 1", page);
+
+        assertThat(actualSqlWhere).isEqualTo("SELECT * FROM test WHERE 1 = 1 ORDER BY column");
+    }
+
 }