您当前的位置: 首页 >  mybatis

杨林伟

暂无认证

  • 3浏览

    0关注

    3337博文

    0收益

  • 0浏览

    0点赞

    0打赏

    0留言

私信
关注
热门博文

60MyBatis - choose、when、otherwise元素

杨林伟 发布时间:2019-04-12 10:24:17 ,浏览量:3

在使用< if>元素时,只要test属性中的表达式为true,就会执行元素中的条件语句,但是在实际应用中,有时只需要从多个选项中选择一个去执行。

例如下面的场景: “当客户名称不为空,则只根据客户名称进行客户筛选; 当客户名称为空,而客户职业不为空,则只根据客户职业进行客户筛选。 当客户名称和客户职业都为空,则要求查询出所有电话不为空的客户信息。”

此种情况下,使用< if>元素进行处理是非常不合适的。如果使用的是 Java 语言,这种情况显然更适合使用switch…case…default语句来处理。那么在MyBatis中有没有类似的语句呢?答案是肯定的。针对上面情况,MyBatis中可以使用< choose>、< when>、< otherwise>元素进行处理。

映射文件代码


    select * from t_customer where 1=1
    
    
        
            and username like concat('%',#sername, '%')
        
       
        
            and jobs= #{jobs}
        
       
        
            and phone is not null
        
    
    

测试方法
 /**
     * 根据客户姓名或职业查询客户信息列表
     */
    @Test
    public void findCustomerByNameOrJobsTest() {
        // 通过工具类生成SqlSession对象
        SqlSession session = MybatisUtils.getSession();

        // 创建Customer对象,封装需要组合查询的条件
        Customer customer = new Customer();
        customer.setUsername("jack");
        customer.setJobs("teacher");

        // 执行SqlSession的查询方法,返回结果集
        List customers = session.selectList("com.itheima.mapper"
                + ".CustomerMapper.findCustomerByNameOrJobs", customer);

        // 输出查询结果信息
        for (Customer customer2 : customers) {
            // 打印输出结果
            System.out.println(customer2);
        }
        // 关闭SqlSession
        session.close();
    }

运行结果: 在这里插入图片描述

关注
打赏
1662376985
查看更多评论
立即登录/注册

微信扫码登录

0.1506s