59MyBatis - if元素(复习)

简介: 59MyBatis - if元素(复习)

前面有讲过,可以参考:动态SQL的 if标签

MyBatis中,元素是最常用的判断语句,它类似于Java中的if语句,主要用于实现某些简单的条件选择。

在实际应用中,我们可能会通过多个条件来精确地查询某个数据。

例如,要查找某个客户的信息,可以通过姓名和职业来查找客户,也可以不填写职业直接通过姓名来查找客户,还可以都不填写而查询出所有客户,此时姓名和职业就是非必须条件。

类似于这种情况,在MyBatis中就可以通过< if>元素来实现。下面就通过一个具体的案例,来演示这种情况下< if>元素的使用,具体实现步骤如下。

项目目录结构

修改映射文件CustomerMapper.xml

在映射文件中使用< if>元素编写根据 客户姓名职业 组合条件查询客户信息列表的动态SQL.

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
    "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.itheima.mapper.CustomerMapper">
    <!——<if>元素使用 ——>
    <select id="findCustomerByNameAndJobs"
        parameterType="com.itheima.po.Customer"
        resultType="com.itheima.po.Customer">
       select * from t_customer where 1=1
        <if test="username!=null and username!=''">
              and username like concat('%',#sername, '%')
         </if>
        <if test="jobs!=null and jobs!=''">
                  and jobs= #{jobs}
        </if>
  </select>
</mapper> 

上面使用< if>元素的test属性分别对username和jobs进行了非空判断(test属性多用于条件判断语句中,用于判断真假,大部分的场景中都是进行非空判断,有时候也需要判断字符串、数字和枚举等),如果传入的查询条件非空就进行动态SQL组装。

测试方法

/**
     * 根据客户姓名和职业组合条件查询客户信息列表
     */
    @Test
    public void findCustomerByNameAndJobsTest() {
        // 通过工具类生成SqlSession对象
        SqlSession session = MybatisUtils.getSession();
        // 创建Customer对象,封装需要组合查询的条件
        Customer customer = new Customer();
        customer.setUsername("jack");
        customer.setJobs("teacher");
        // 执行SqlSession的查询方法,返回结果集
        List<Customer> customers = session.selectList("com.itheima.mapper"
                + ".CustomerMapper.findCustomerByNameAndJobs", customer);
        // 输出查询结果信息
        for (Customer customer2 : customers) {
            // 打印输出结果
            System.out.println(customer2);
        }
        // 关闭SqlSession
        session.close();
    }
目录
相关文章
|
SQL XML 存储
一.吃透Mybatis源码-Mybatis初始化
Mybatis是Java 项目开发使用率非常高的一款持久层框架,它支持自定义 SQL、存储过程以及高级映射。MyBatis 免除了几乎所有的 JDBC 代码以及设置参数和获取结果集的工作。MyBatis 可以通过简单的 XML 或注解来配置和映射原始类型、接口和 Java POJO(Plain Old Java Objects,普通老式 Java 对象)为数据库中的记录。 同时Mybatis也是面试过程中被高频问到的一门技术,今天我就带大家一起来对Mybatis的重要原理及其源码进行一个分析。
|
10月前
|
Java 数据库连接 Maven
SSM复习之mybatis01:Mybatis简介-第一个Mybatis代码简单实现
SSM复习之mybatis01:Mybatis简介-第一个Mybatis代码简单实现
52 0
|
12月前
|
SQL Java 数据库连接
58MyBatis - 动态SQL元素(复习)
58MyBatis - 动态SQL元素(复习)
24 0
|
12月前
|
SQL Java 数据库连接
63MyBatis - foreach元素(复习)
63MyBatis - foreach元素(复习)
42 0
|
SQL XML 存储
Mybatis知识点总结
Mybatis知识点总结
206 0
|
SQL XML druid
Mybatis快速复习--简介篇
Mybatis快速复习--简介篇
88 0
|
SQL Java 数据库连接
MyBatis 小知识点补充(#{} 和 ${})
MyBatis 小知识点补充(#{} 和 ${})
68 0
|
SQL XML druid
Mybatis入门之基本操作!!!
Mybatis入门之基本操作!!!
|
SQL XML Java
MyBatis知识点笔记
MyBatis知识点笔记
187 0
MyBatis知识点笔记
|
SQL XML 存储
Mybatis知识点全总结(二)
Mybatis知识点全总结
103 1
Mybatis知识点全总结(二)