Index: ssts-web/src/test/java/test/forgon/tools/util/SqlUtilsTest.java =================================================================== diff -u -r19036 -r21436 --- ssts-web/src/test/java/test/forgon/tools/util/SqlUtilsTest.java (.../SqlUtilsTest.java) (revision 19036) +++ ssts-web/src/test/java/test/forgon/tools/util/SqlUtilsTest.java (.../SqlUtilsTest.java) (revision 21436) @@ -1,17 +1,27 @@ package test.forgon.tools.util; +import static org.testng.Assert.assertEquals; +import static org.testng.Assert.assertTrue; + +import java.util.ArrayList; +import java.util.List; + +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.dao.InvalidDataAccessResourceUsageException; import org.testng.annotations.Test; -import static org.testng.Assert.*; -import com.forgon.tools.util.SqlUtils; import test.forgon.disinfectsystem.AbstractCSSDTest; + +import com.forgon.tools.db.InitDbConnection; +import com.forgon.tools.util.SqlUtils; /** * sql语句工具类的测试 * @author Chenjiaru * */ public class SqlUtilsTest extends AbstractCSSDTest { - + @Autowired + private InitDbConnection initDbConnection; /** * 此方法主要测试四种场景 * 1、当field="name",arr = {"张三", "李四"}时。 预期结果:" and (name='张三' or name='李四')" @@ -66,4 +76,28 @@ assertEquals(SqlUtils.get_NotInSql(field4, arr4), " and 1=0 "); } + @Test + public void testInSql(){ + List depart = new ArrayList<>(); + for(int i = 0 ; i < 5000;++i){ + depart.add(i+""); + } + String where = SqlUtils.getStringFieldInCollectionsPredicate("po.depart", depart); + if(initDbConnection.isOracle()){ + try{ + tousseInstanceManager.getByHql(where); + assertTrue(false,"oracle 会报错,最多能放在in里面放1000个项"); + }catch(InvalidDataAccessResourceUsageException e){ + assertTrue(true,"oracle in里面项数多了,会报错"); + } + } + + where = SqlUtils.getStringFieldInLargeCollectionsPredicate("po.depart", depart); + try{ + tousseInstanceManager.getByHql(where); + }catch(Exception e){ + assertTrue(false,"这里应该不会报错了"); + } + } + }