Mybatis if 标签使用总结,有图易懂

简介: Mybatis if 标签使用总结,有图易懂

在项目开发中,mybatis <if> 标签使用广泛,本文讲解if标签的两种使用方式

其一、使用 <if> 标签判断某一字段是否为空

其二、使用 <if> 标签判断传入参数是否相等

具体代码如下

数据库表结构和数据

image.png

实体类:

package com.demo.bean;
public class Commodity {
  private String name;
  private String date;
  public String getName() {
    return name;
  }
  public void setName(String name) {
    this.name = name;
  }
  public String getDate() {
    return date;
  }
  public void setDate(String date) {
    this.date = date;
  }
  @Override
  public String toString() {
    return "Com [name=" + name + ", date=" + date + "]";
  }
}

mapper层:

package com.demo.mapper;
import java.util.List;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;
import com.demo.bean.Commodity;
@Mapper
public interface CommodityMapper {
  List<Commodity> getListByDate(Commodity commodity);
  List<Commodity> getListByStartDateAndEndDate(@Param("startDate")String startDate, @Param("endDate")String endDate);
}

mapper.xml文件:

<?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.demo.mapper.CommodityMapper">
  <resultMap id="BaseResultMap" type="com.demo.bean.Commodity">
    <id column="name" property="name" jdbcType="VARCHAR" />
    <result column="date" property="date" jdbcType="VARCHAR" />
  </resultMap>
  <select id="getListByDate" resultMap="BaseResultMap">
    select * from commodity where 1 = 1
    <if test="date != null and date != ''">
      and date = #{date}
    </if> 
  </select>
  <select id="getListByStartDateAndEndDate" resultMap="BaseResultMap">
    select * from commodity where 1 = 1
    <if test="#{startDate}.toString() != #{endDate}.toString()">
      and date between #{startDate} and #{endDate}
    </if>
  </select>
</mapper>

注意:mybatis 等值判断的 tostring()方法 (上边代码中第二个select中的toString()方法)

controller层:

package com.demo.controller;
import java.util.HashMap;
import java.util.Map;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;
import org.springframework.web.bind.annotation.RestController;
import com.demo.bean.Commodity;
import com.demo.mapper.CommodityMapper;
@RestController
public class DemoController {
  @Autowired
  private CommodityMapper comMapper;
  @RequestMapping(value = "/commodity")
  public Object commodity() {
    Map<String, Object> map = new HashMap<String, Object>();
    Commodity com =new Commodity();
    com.setDate("2018-10-12");
    map.put("res", comMapper.getListByDate(com));
    return map;
  }
  @RequestMapping(value = "/between")
  public Object commodityBetween() {
    Map<String, Object> map = new HashMap<String, Object>();
    map.put("res", comMapper.getListByStartDateAndEndDate("2018-10-09", "2018-10-13"));
    return map;
  }
}

测试:

1、访问  http://localhost:9000/commodity  

image.png

2、访问  http://localhost:9000/between

image.png


目录
相关文章
|
6月前
|
SQL Java 数据库连接
MyBatis【源码探究 01】mapper.xml文件内<if test>标签判断参数值不等于null和空(当参数值为0)时筛选条件失效原因分析
MyBatis【源码探究 01】mapper.xml文件内<if test>标签判断参数值不等于null和空(当参数值为0)时筛选条件失效原因分析
726 0
MyBatis【源码探究 01】mapper.xml文件内<if test>标签判断参数值不等于null和空(当参数值为0)时筛选条件失效原因分析
|
6月前
|
SQL XML Java
Mybatis中选择语句的使用:<choose>标签、分区排序 Row_num() over ()函数的使用呢
Mybatis中选择语句的使用:<choose>标签、分区排序 Row_num() over ()函数的使用呢
51 0
|
2月前
|
SQL XML Java
mybatis复习03,动态SQL,if,choose,where,set,trim标签及foreach标签的用法
文章介绍了MyBatis中动态SQL的用法,包括if、choose、where、set和trim标签,以及foreach标签的详细使用。通过实际代码示例,展示了如何根据条件动态构建查询、更新和批量插入操作的SQL语句。
mybatis复习03,动态SQL,if,choose,where,set,trim标签及foreach标签的用法
|
2月前
|
SQL XML Java
mybatis复习04高级查询 一对多,多对一的映射处理,collection和association标签的使用
文章介绍了MyBatis中高级查询的一对多和多对一映射处理,包括创建数据库表、抽象对应的实体类、使用resultMap中的association和collection标签进行映射处理,以及如何实现级联查询和分步查询。此外,还补充了延迟加载的设置和用法。
mybatis复习04高级查询 一对多,多对一的映射处理,collection和association标签的使用
|
1月前
|
SQL XML Java
Mybatis的<where>,<if>等标签用法
这篇文章详细解释了Mybatis中<where>和<if>等标签的用法,展示了如何在SQL动态构建中有效地过滤条件和处理逻辑分支。
146 1
|
1月前
|
SQL Java 数据库连接
Mybatis入门(select标签)
这篇文章介绍了Mybatis中`select`标签的基本用法及其相关属性,并通过示例展示了如何配置和执行SQL查询语句。
38 0
Mybatis入门(select标签)
|
1月前
|
SQL Java 数据库连接
Mybatis的<insert>,<update>,<delete>标签用法
这篇文章详细讲解了Mybatis中<insert>, <update>, <delete>标签的使用方法,并提供了示例代码来展示如何执行数据库的增删改操作。
14 0
|
3月前
|
SQL Java 数据库连接
MyBatis Mapper.XML 标签使用说明
MyBatis Mapper.XML 标签使用说明
37 0
|
5月前
|
存储 Java 数据库连接
mybatis精讲(三)--标签及TypeHandler使用
mybatis精讲(三)--标签及TypeHandler使用
|
6月前
|
SQL 缓存 Java
mybatis使用总结
mybatis使用总结