diff --git a/src/test/java/org/apache/ibatis/plugin/PluginTest.java b/src/test/java/org/apache/ibatis/plugin/PluginTest.java index e7a4d83352f..ddcc48ea47a 100644 --- a/src/test/java/org/apache/ibatis/plugin/PluginTest.java +++ b/src/test/java/org/apache/ibatis/plugin/PluginTest.java @@ -1,5 +1,5 @@ /* - * Copyright 2009-2024 the original author or authors. + * Copyright 2009-2025 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/src/test/java/org/apache/ibatis/submitted/choosewhen/ChooseWhenMapper.java b/src/test/java/org/apache/ibatis/submitted/choosewhen/ChooseWhenMapper.java new file mode 100644 index 00000000000..5a98c88beb4 --- /dev/null +++ b/src/test/java/org/apache/ibatis/submitted/choosewhen/ChooseWhenMapper.java @@ -0,0 +1,23 @@ +/* + * Copyright 2009-2025 the original author or authors. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package org.apache.ibatis.submitted.choosewhen; + +import java.util.List; +import java.util.Map; + +public interface ChooseWhenMapper { + List selectUser(Map param); +} diff --git a/src/test/java/org/apache/ibatis/submitted/choosewhen/ChooseWhenTest.java b/src/test/java/org/apache/ibatis/submitted/choosewhen/ChooseWhenTest.java new file mode 100644 index 00000000000..4ad849d934d --- /dev/null +++ b/src/test/java/org/apache/ibatis/submitted/choosewhen/ChooseWhenTest.java @@ -0,0 +1,59 @@ +/* + * Copyright 2009-2025 the original author or authors. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package org.apache.ibatis.submitted.choosewhen; + +import static org.junit.jupiter.api.Assertions.assertTrue; + +import java.io.Reader; +import java.util.HashMap; +import java.util.List; +import java.util.Map; + +import org.apache.ibatis.BaseDataTest; +import org.apache.ibatis.io.Resources; +import org.apache.ibatis.session.SqlSession; +import org.apache.ibatis.session.SqlSessionFactory; +import org.apache.ibatis.session.SqlSessionFactoryBuilder; +import org.junit.jupiter.api.BeforeAll; +import org.junit.jupiter.api.Test; + +public class ChooseWhenTest { + + private static SqlSessionFactory sqlSessionFactory; + + @BeforeAll + static void initDatabase() throws Exception { + try (Reader reader = Resources.getResourceAsReader("org/apache/ibatis/submitted/choosewhen/mybatis-config.xml")) { + sqlSessionFactory = new SqlSessionFactoryBuilder().build(reader); + sqlSessionFactory.getConfiguration().setLazyLoadingEnabled(true); + sqlSessionFactory.getConfiguration().setAggressiveLazyLoading(false); + } + + BaseDataTest.runScript(sqlSessionFactory.getConfiguration().getEnvironment().getDataSource(), + "org/apache/ibatis/submitted/choosewhen/CreateDB.sql"); + } + + @Test + public void shouldApplyOtherwiseWhenNoParam() { + try (SqlSession sqlSession = sqlSessionFactory.openSession()) { + ChooseWhenMapper mapper = sqlSession.getMapper(ChooseWhenMapper.class); + Map param = new HashMap<>(); // name 없음 + List users = mapper.selectUser(param); + assertTrue(users.stream().allMatch(u -> "ACTIVE".equals(u.getStatus()))); + } + } + +} diff --git a/src/test/java/org/apache/ibatis/submitted/choosewhen/User.java b/src/test/java/org/apache/ibatis/submitted/choosewhen/User.java new file mode 100644 index 00000000000..3dc98e2b72e --- /dev/null +++ b/src/test/java/org/apache/ibatis/submitted/choosewhen/User.java @@ -0,0 +1,38 @@ +/* + * Copyright 2009-2025 the original author or authors. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package org.apache.ibatis.submitted.choosewhen; + +public class User { + private String name; + private String status; + + // getters/setters + public String getName() { + return name; + } + + public void setName(String name) { + this.name = name; + } + + public String getStatus() { + return status; + } + + public void setStatus(String status) { + this.status = status; + } +} diff --git a/src/test/java/org/apache/ibatis/submitted/optional_on_mapper_method/OptionalOnMapperMethodTest.java b/src/test/java/org/apache/ibatis/submitted/optional_on_mapper_method/OptionalOnMapperMethodTest.java index 0794414da7f..0fb54ae6192 100644 --- a/src/test/java/org/apache/ibatis/submitted/optional_on_mapper_method/OptionalOnMapperMethodTest.java +++ b/src/test/java/org/apache/ibatis/submitted/optional_on_mapper_method/OptionalOnMapperMethodTest.java @@ -1,5 +1,5 @@ /* - * Copyright 2009-2025 the original author or authors. + * Copyright 2009-2024 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/src/test/java/org/apache/ibatis/submitted/overwritingproperties/FooMapperTest.java b/src/test/java/org/apache/ibatis/submitted/overwritingproperties/FooMapperTest.java index 6db59b11282..e899ff7becc 100644 --- a/src/test/java/org/apache/ibatis/submitted/overwritingproperties/FooMapperTest.java +++ b/src/test/java/org/apache/ibatis/submitted/overwritingproperties/FooMapperTest.java @@ -1,5 +1,5 @@ /* - * Copyright 2009-2024 the original author or authors. + * Copyright 2009-2025 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/src/test/resources/org/apache/ibatis/submitted/choosewhen/ChooseWhenMapper.xml b/src/test/resources/org/apache/ibatis/submitted/choosewhen/ChooseWhenMapper.xml new file mode 100644 index 00000000000..af9072a3e60 --- /dev/null +++ b/src/test/resources/org/apache/ibatis/submitted/choosewhen/ChooseWhenMapper.xml @@ -0,0 +1,41 @@ + + + + + + + + + + + diff --git a/src/test/resources/org/apache/ibatis/submitted/choosewhen/CreateDB.sql b/src/test/resources/org/apache/ibatis/submitted/choosewhen/CreateDB.sql new file mode 100644 index 00000000000..551bb5ebb90 --- /dev/null +++ b/src/test/resources/org/apache/ibatis/submitted/choosewhen/CreateDB.sql @@ -0,0 +1,25 @@ +-- +-- Copyright 2009-2025 the original author or authors. +-- +-- Licensed under the Apache License, Version 2.0 (the "License"); +-- you may not use this file except in compliance with the License. +-- You may obtain a copy of the License at +-- +-- https://www.apache.org/licenses/LICENSE-2.0 +-- +-- Unless required by applicable law or agreed to in writing, software +-- distributed under the License is distributed on an "AS IS" BASIS, +-- WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +-- See the License for the specific language governing permissions and +-- limitations under the License. +-- + +CREATE TABLE users ( + id INT AUTO_INCREMENT PRIMARY KEY, + name VARCHAR(100), + status VARCHAR(20) +); + +INSERT INTO users (name, status) VALUES ('Alice', 'ACTIVE'); +INSERT INTO users (name, status) VALUES ('Bob', 'ACTIVE'); +INSERT INTO users (name, status) VALUES (null, 'ACTIVE'); \ No newline at end of file diff --git a/src/test/resources/org/apache/ibatis/submitted/choosewhen/mybatis-config.xml b/src/test/resources/org/apache/ibatis/submitted/choosewhen/mybatis-config.xml new file mode 100644 index 00000000000..196cd5981d7 --- /dev/null +++ b/src/test/resources/org/apache/ibatis/submitted/choosewhen/mybatis-config.xml @@ -0,0 +1,41 @@ + + + + + + + + + + + + + + + + + + + + + + +