栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

mybatis动态SQL多条件查询4 - choose, when, otherwise标签

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

mybatis动态SQL多条件查询4 - choose, when, otherwise标签

choose, when, otherwise标签是配套使用的标签。它就像我们java代码的if, else if, else.

唯一不同的是,when 和otherwise是在choose标签下使用。

when至少要有一个,otherwise最多只有一个。

目录

1.定义接口

2. 定义mapper映射文件

3. 定义测试方法

4. 测试结果

5. 引伸:无参时候

5.1 结果


1.定义接口
    
    List getEmpByChoose(Emp emp);

2. 定义mapper映射文件

每个when是一个条件,只要满足了其中一种条件,则后面的when和otherwise不会执行,所以中间不需要用and 或者or 拼接。都不满足条件时候,otherwise默认是did=1.

    
        select * from t_emp
        
            

                
                    emp_name = #{empName}
                

                
                    age = #{age}
                
                
                    sex = #{sex}
                
                
                    email = #{email}
                
                
                    did=1
                
            
        

3. 定义测试方法
    @Test
    public void testGetEmpByChoose(){
        SqlSession sqlSession = SqlSessionUtils.getSqlSession();
        DynamicSqlMapper mapper = sqlSession.getMapper(DynamicSqlMapper.class);
        List emps = mapper.getEmpByChoose(new Emp(null, "张三", 23, "男", null));
        System.out.println(emps);
    }

4. 测试结果

我们从LOG中看出,只执行了emp_name。

select * from t_emp WHERe emp_name = ?

20:05:43:480 [main] DEBUG org.apache.ibatis.datasource.pooled.PooledDataSource 434 - Created connection 1787079037.
20:05:43:484 [main] DEBUG org.apache.ibatis.logging.jdbc.BaseJdbcLogger 137 - ==>  Preparing: select * from t_emp WHERe emp_name = ?
20:05:43:572 [main] DEBUG org.apache.ibatis.logging.jdbc.BaseJdbcLogger 137 - ==> Parameters: 张三(String)
20:05:43:606 [main] DEBUG org.apache.ibatis.logging.jdbc.BaseJdbcLogger 137 - <==      Total: 1
[Emp{eid=1, empName='张三', age=32, sex='男', email='123@qq.com', dept=null}]

5. 引伸:无参时候
        List emps = mapper.getEmpByChoose(new Emp(null, "", null, "", null));

5.1 结果

所有情况都不符合时候,执行otherwise里面的条件, did=1的结果。

20:13:50:555 [main] DEBUG org.apache.ibatis.logging.jdbc.BaseJdbcLogger 137 - ==>  Preparing: select * from t_emp WHERe did=1
20:13:50:587 [main] DEBUG org.apache.ibatis.logging.jdbc.BaseJdbcLogger 137 - ==> Parameters: 
20:13:50:618 [main] DEBUG org.apache.ibatis.logging.jdbc.BaseJdbcLogger 137 - <==      Total: 2
[Emp{eid=1, empName='张三', age=32, sex='男', email='123@qq.com', dept=null}, Emp{eid=4, empName='赵六', age=56, sex='女', email='123456@qq.com', dept=null}]

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/881149.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号