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


目录
相关文章
|
2天前
|
SQL XML Java
Mybatis中选择语句的使用:<choose>标签、分区排序 Row_num() over ()函数的使用呢
Mybatis中选择语句的使用:<choose>标签、分区排序 Row_num() over ()函数的使用呢
19 0
|
6月前
|
Java 数据库连接 mybatis
mybatis的set标签
mybatis的set标签
|
2天前
|
SQL Java 数据库连接
MyBatis【源码探究 01】mapper.xml文件内<if test>标签判断参数值不等于null和空(当参数值为0)时筛选条件失效原因分析
MyBatis【源码探究 01】mapper.xml文件内<if test>标签判断参数值不等于null和空(当参数值为0)时筛选条件失效原因分析
114 0
MyBatis【源码探究 01】mapper.xml文件内<if test>标签判断参数值不等于null和空(当参数值为0)时筛选条件失效原因分析
|
7月前
|
SQL Java 数据库连接
28MyBatis - 动态SQL的 if标签
28MyBatis - 动态SQL的 if标签
39 0
|
6月前
|
SQL Java 数据库连接
mybatis的trim标签insert标签update标签
mybatis的trim标签insert标签update标签
|
6月前
|
Java 数据库连接 mybatis
mybatis的choose,when,otherwize标签
mybatis的choose,when,otherwize标签
|
2天前
|
SQL 缓存 Java
mybatis使用总结
mybatis使用总结
|
2天前
|
SQL Java 关系型数据库
MyBatis的动态SQL之OGNL(Object-Graph Navigation Language)表达式以及各种标签的用法
MyBatis的动态SQL之OGNL(Object-Graph Navigation Language)表达式以及各种标签的用法
21 0
|
2天前
|
SQL Java 关系型数据库
MyBatis中的9种常用动态sql标签精妙用法
MyBatis中的9种常用动态sql标签精妙用法
134 0
|
6月前
|
Java 数据库连接 mybatis
mybatis的where标签
mybatis的where标签