瀏覽代碼

修复 bug

miemie 6 年之前
父節點
當前提交
bfba6f7905

+ 4 - 3
mybatis-plus-core/src/main/java/com/baomidou/mybatisplus/core/conditions/segments/AbstractISegmentList.java

@@ -15,12 +15,12 @@
  */
 package com.baomidou.mybatisplus.core.conditions.segments;
 
+import com.baomidou.mybatisplus.core.conditions.ISqlSegment;
+
 import java.util.ArrayList;
 import java.util.Collection;
 import java.util.List;
 
-import com.baomidou.mybatisplus.core.conditions.ISqlSegment;
-
 /**
  * <p>
  * SQL 片段集合 处理的抽象类
@@ -75,7 +75,8 @@ public abstract class AbstractISegmentList extends ArrayList<ISqlSegment> implem
     /**
      * 删除元素里最后一个值
      */
-    protected void removeLast() {
+    protected void removeAndFlushLast() {
         remove(size() - 1);
+        flushLastValue(this);
     }
 }

+ 5 - 5
mybatis-plus-core/src/main/java/com/baomidou/mybatisplus/core/conditions/segments/NormalSegmentList.java

@@ -15,13 +15,13 @@
  */
 package com.baomidou.mybatisplus.core.conditions.segments;
 
-import java.util.List;
-import java.util.stream.Collectors;
-
 import com.baomidou.mybatisplus.core.conditions.ISqlSegment;
 import com.baomidou.mybatisplus.core.enums.SqlKeyword;
 import com.baomidou.mybatisplus.core.toolkit.StringPool;
 
+import java.util.List;
+import java.util.stream.Collectors;
+
 /**
  * <p>
  * 普通片段
@@ -62,7 +62,7 @@ public class NormalSegmentList extends AbstractISegmentList {
                         return false;
                     } else {
                         //和上次的不一样
-                        removeLast();
+                        removeAndFlushLast();
                     }
                 }
             } else {
@@ -87,7 +87,7 @@ public class NormalSegmentList extends AbstractISegmentList {
     @Override
     public String getSqlSegment() {
         if (MatchSegment.AND_OR.match(lastValue)) {
-            removeLast();
+            removeAndFlushLast();
         }
         return this.stream().map(ISqlSegment::getSqlSegment).collect(Collectors.joining(StringPool.SPACE));
     }

+ 31 - 23
mybatis-plus/src/test/java/com/baomidou/mybatisplus/test/mysql/MysqlTestDataMapperTest.java

@@ -1,23 +1,7 @@
 package com.baomidou.mybatisplus.test.mysql;
 
-import java.util.ArrayList;
-import java.util.Arrays;
-import java.util.HashMap;
-import java.util.List;
-import java.util.Map;
-
-import javax.annotation.Resource;
-
-import org.junit.Assert;
-import org.junit.BeforeClass;
-import org.junit.FixMethodOrder;
-import org.junit.Test;
-import org.junit.runner.RunWith;
-import org.junit.runners.MethodSorters;
-import org.springframework.test.context.ContextConfiguration;
-import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;
-
 import com.alibaba.fastjson.JSON;
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
 import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper;
 import com.baomidou.mybatisplus.core.metadata.IPage;
@@ -32,7 +16,16 @@ import com.baomidou.mybatisplus.test.base.enums.TestEnum;
 import com.baomidou.mybatisplus.test.base.mapper.commons.CommonDataMapper;
 import com.baomidou.mybatisplus.test.base.mapper.commons.CommonLogicDataMapper;
 import com.baomidou.mybatisplus.test.base.mapper.mysql.MysqlDataMapper;
-import com.baomidou.mybatisplus.test.mysql.config.MysqlDb;
+import org.junit.Assert;
+import org.junit.FixMethodOrder;
+import org.junit.Test;
+import org.junit.runner.RunWith;
+import org.junit.runners.MethodSorters;
+import org.springframework.test.context.ContextConfiguration;
+import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;
+
+import javax.annotation.Resource;
+import java.util.*;
 
 
 /**
@@ -55,11 +48,11 @@ public class MysqlTestDataMapperTest {
     @Resource
     private MysqlDataMapper mysqlMapper;
 
-    @BeforeClass
-    public static void init() throws Exception {
-        MysqlDb.initMysqlData();
-        System.out.println("init success");
-    }
+//    @BeforeClass
+//    public static void init() throws Exception {
+//        MysqlDb.initMysqlData();
+//        System.out.println("init success");
+//    }
 
     @Test
     public void a1_insertForeach() {
@@ -368,4 +361,19 @@ public class MysqlTestDataMapperTest {
         // 4. 有 where 条件 也有 last 条件
         mysqlMapper.getAll(Wrappers.lambdaQuery(new MysqlData()).eq(MysqlData::getGroup, 1).last("limit 1"));
     }
+
+    @Test
+    public void testNestPage() {
+        ArrayList<Object> list = new ArrayList<>();
+        LambdaQueryWrapper<CommonData> wrapper = Wrappers.<CommonData>lambdaQuery()
+            .isNotNull(CommonData::getId).and(i -> i.eq(CommonData::getId, 1)
+                .or().in(CommonData::getTestInt, list));
+        System.out.println(wrapper.getSqlSegment());
+        System.out.println(wrapper.getSqlSegment());
+        System.out.println(wrapper.getSqlSegment());
+        System.out.println(wrapper.getSqlSegment());
+        System.out.println(wrapper.getSqlSegment());
+        commonMapper.selectList(wrapper);
+//        commonMapper.selectPage(new Page<>(1, 10), wrapper);
+    }
 }