diff --git a/src/test/java/org/apache/ibatis/submitted/param_name_resolve/ActualParamNameTest.java b/src/test/java/org/apache/ibatis/submitted/param_name_resolve/ActualParamNameTest.java index 2d0af704a4d..d621fb059eb 100644 --- a/src/test/java/org/apache/ibatis/submitted/param_name_resolve/ActualParamNameTest.java +++ b/src/test/java/org/apache/ibatis/submitted/param_name_resolve/ActualParamNameTest.java @@ -16,6 +16,7 @@ package org.apache.ibatis.submitted.param_name_resolve; import org.apache.ibatis.annotations.Select; +import org.apache.ibatis.exceptions.PersistenceException; import org.apache.ibatis.io.Resources; import org.apache.ibatis.jdbc.ScriptRunner; import org.apache.ibatis.session.SqlSession; @@ -30,6 +31,7 @@ import java.util.List; import static org.junit.Assert.assertEquals; +import static org.junit.Assert.fail; class ActualParamNameTest { @@ -93,6 +95,33 @@ void testSingleArrayParameterWhenUseActualParamNameIsTrue() { } } + @Test + void testSingleListParameterWhenUseActualParamNameIsFalse() { + sqlSessionFactory.getConfiguration().setUseActualParamName(false); + try (SqlSession sqlSession = sqlSessionFactory.openSession()) { + Mapper mapper = sqlSession.getMapper(Mapper.class); + // use actual name -> no available and index parameter("0") is not available too + { + try { + mapper.getUserCountUsingList(Arrays.asList(1, 2)); + fail(); + } catch (PersistenceException e) { + assertEquals("Parameter 'ids' not found. Available parameters are [collection, list]", e.getCause().getMessage()); + } + } + // use 'collection' as alias + { + long count = mapper.getUserCountUsingListWithAliasIsCollection(Arrays.asList(1, 2)); + assertEquals(2, count); + } + // use 'list' as alias + { + long count = mapper.getUserCountUsingListWithAliasIsList(Arrays.asList(1, 2)); + assertEquals(2, count); + } + } + } + interface Mapper { @Select({ "