浏览代码

fix #IGI3H

Caratacus 7 年之前
父节点
当前提交
49e7e0423d

+ 10 - 0
mybatis-plus-core/src/test/java/com/baomidou/mybatisplus/test/GlobalConfigurationTest.java

@@ -15,7 +15,9 @@
  */
 package com.baomidou.mybatisplus.test;
 
+import java.util.ArrayList;
 import java.util.Date;
+import java.util.HashSet;
 import java.util.List;
 import java.util.UUID;
 
@@ -29,6 +31,7 @@ import com.baomidou.mybatisplus.mapper.Wrapper;
 import com.baomidou.mybatisplus.test.mysql.entity.NotPK;
 import com.baomidou.mybatisplus.test.mysql.entity.Test;
 import com.baomidou.mybatisplus.test.mysql.mapper.NotPKMapper;
+import com.baomidou.mybatisplus.test.mysql.mapper.RoleMapper;
 import com.baomidou.mybatisplus.test.mysql.mapper.TestMapper;
 
 /**
@@ -87,6 +90,13 @@ public class GlobalConfigurationTest extends CrudTest {
         Assert.assertTrue(count > 0);
         int deleteCount = pkMapper.delete(null);
         Assert.assertTrue(deleteCount > 0);
+        List<String> list = new ArrayList<>();
+        list.add("1");
+        list.add("2");
+        list.add("3");
+        RoleMapper mapper = sqlSession.getMapper(RoleMapper.class);
+        System.out.println(mapper.selectBatchIds(list));
+        System.out.println(mapper.selectBatchIds(new HashSet<>(list)));
         sqlSession.commit();
     }
 

+ 28 - 14
mybatis-plus-support/src/main/java/com/baomidou/mybatisplus/mapper/AutoSqlInjector.java

@@ -15,28 +15,42 @@
  */
 package com.baomidou.mybatisplus.mapper;
 
-import com.baomidou.mybatisplus.entity.GlobalConfiguration;
-import com.baomidou.mybatisplus.entity.TableFieldInfo;
-import com.baomidou.mybatisplus.entity.TableInfo;
-import com.baomidou.mybatisplus.enums.FieldFill;
-import com.baomidou.mybatisplus.enums.FieldStrategy;
-import com.baomidou.mybatisplus.enums.IdType;
-import com.baomidou.mybatisplus.enums.SqlMethod;
-import com.baomidou.mybatisplus.toolkit.*;
+import java.lang.reflect.ParameterizedType;
+import java.lang.reflect.Type;
+import java.util.ArrayList;
+import java.util.Iterator;
+import java.util.List;
+import java.util.Map;
+import java.util.Set;
+
 import org.apache.ibatis.builder.MapperBuilderAssistant;
 import org.apache.ibatis.executor.keygen.Jdbc3KeyGenerator;
 import org.apache.ibatis.executor.keygen.KeyGenerator;
 import org.apache.ibatis.executor.keygen.NoKeyGenerator;
 import org.apache.ibatis.logging.Log;
 import org.apache.ibatis.logging.LogFactory;
-import org.apache.ibatis.mapping.*;
+import org.apache.ibatis.mapping.MappedStatement;
+import org.apache.ibatis.mapping.ResultMap;
+import org.apache.ibatis.mapping.ResultMapping;
+import org.apache.ibatis.mapping.SqlCommandType;
+import org.apache.ibatis.mapping.SqlSource;
+import org.apache.ibatis.mapping.StatementType;
 import org.apache.ibatis.scripting.LanguageDriver;
 import org.apache.ibatis.scripting.defaults.RawSqlSource;
 import org.apache.ibatis.session.Configuration;
 
-import java.lang.reflect.ParameterizedType;
-import java.lang.reflect.Type;
-import java.util.*;
+import com.baomidou.mybatisplus.entity.GlobalConfiguration;
+import com.baomidou.mybatisplus.entity.TableFieldInfo;
+import com.baomidou.mybatisplus.entity.TableInfo;
+import com.baomidou.mybatisplus.enums.FieldFill;
+import com.baomidou.mybatisplus.enums.FieldStrategy;
+import com.baomidou.mybatisplus.enums.IdType;
+import com.baomidou.mybatisplus.enums.SqlMethod;
+import com.baomidou.mybatisplus.toolkit.CollectionUtils;
+import com.baomidou.mybatisplus.toolkit.GlobalConfigUtils;
+import com.baomidou.mybatisplus.toolkit.SqlReservedWords;
+import com.baomidou.mybatisplus.toolkit.StringUtils;
+import com.baomidou.mybatisplus.toolkit.TableInfoHelper;
 
 /**
  * <p>
@@ -302,7 +316,7 @@ public class AutoSqlInjector implements ISqlInjector {
         if (batch) {
             sqlMethod = SqlMethod.DELETE_BATCH_BY_IDS;
             StringBuilder ids = new StringBuilder();
-            ids.append("\n<foreach item=\"item\" index=\"index\" collection=\"list\" separator=\",\">");
+            ids.append("\n<foreach item=\"item\" index=\"index\" collection=\"coll\" separator=\",\">");
             ids.append("#{item}");
             ids.append("\n</foreach>");
             idStr = ids.toString();
@@ -367,7 +381,7 @@ public class AutoSqlInjector implements ISqlInjector {
         if (batch) {
             sqlMethod = SqlMethod.SELECT_BATCH_BY_IDS;
             StringBuilder ids = new StringBuilder();
-            ids.append("\n<foreach item=\"item\" index=\"index\" collection=\"list\" separator=\",\">");
+            ids.append("\n<foreach item=\"item\" index=\"index\" collection=\"coll\" separator=\",\">");
             ids.append("#{item}");
             ids.append("\n</foreach>");
             sqlSource = languageDriver.createSqlSource(configuration, String.format(sqlMethod.getSql(),

+ 3 - 2
mybatis-plus-support/src/main/java/com/baomidou/mybatisplus/mapper/BaseMapper.java

@@ -16,6 +16,7 @@
 package com.baomidou.mybatisplus.mapper;
 
 import java.io.Serializable;
+import java.util.Collection;
 import java.util.List;
 import java.util.Map;
 
@@ -93,7 +94,7 @@ public interface BaseMapper<T> {
      * @param idList 主键ID列表
      * @return int
      */
-    Integer deleteBatchIds(List<? extends Serializable> idList);
+    Integer deleteBatchIds(@Param("coll") Collection<? extends Serializable> idList);
 
     /**
      * <p>
@@ -144,7 +145,7 @@ public interface BaseMapper<T> {
      * @param idList 主键ID列表
      * @return List<T>
      */
-    List<T> selectBatchIds(List<? extends Serializable> idList);
+    List<T> selectBatchIds(@Param("coll") Collection<? extends Serializable> idList);
 
     /**
      * <p>

+ 3 - 2
mybatis-plus-support/src/main/java/com/baomidou/mybatisplus/service/IService.java

@@ -16,6 +16,7 @@
 package com.baomidou.mybatisplus.service;
 
 import java.io.Serializable;
+import java.util.Collection;
 import java.util.List;
 import java.util.Map;
 
@@ -151,7 +152,7 @@ public interface IService<T> {
      * @param idList 主键ID列表
      * @return boolean
      */
-    boolean deleteBatchIds(List<? extends Serializable> idList);
+    boolean deleteBatchIds(Collection<? extends Serializable> idList);
 
     /**
      * <p>
@@ -262,7 +263,7 @@ public interface IService<T> {
      * @param idList 主键ID列表
      * @return List<T>
      */
-    List<T> selectBatchIds(List<? extends Serializable> idList);
+    List<T> selectBatchIds(Collection<? extends Serializable> idList);
 
     /**
      * <p>

+ 3 - 2
mybatis-plus-support/src/main/java/com/baomidou/mybatisplus/service/impl/ServiceImpl.java

@@ -16,6 +16,7 @@
 package com.baomidou.mybatisplus.service.impl;
 
 import java.io.Serializable;
+import java.util.Collection;
 import java.util.List;
 import java.util.Map;
 
@@ -270,7 +271,7 @@ public class ServiceImpl<M extends BaseMapper<T>, T> implements IService<T> {
 
     @Transactional(rollbackFor = Exception.class)
     @Override
-    public boolean deleteBatchIds(List<? extends Serializable> idList) {
+    public boolean deleteBatchIds(Collection<? extends Serializable> idList) {
         return SqlHelper.delBool(baseMapper.deleteBatchIds(idList));
     }
 
@@ -353,7 +354,7 @@ public class ServiceImpl<M extends BaseMapper<T>, T> implements IService<T> {
     }
 
     @Override
-    public List<T> selectBatchIds(List<? extends Serializable> idList) {
+    public List<T> selectBatchIds(Collection<? extends Serializable> idList) {
         return baseMapper.selectBatchIds(idList);
     }