在mybatis中使用mapper进行if条件判断

目的:

在使用mybatis框架中mapper文件有自动生成,但有时需要自己添加sql语句进行开发,当遇到需要使用 if进行条件判断的时候该怎么写?

查询sql语句如下:

<select id="queryData" parameterType="com.pojo.QueryDetailReq" resultType="com.pojo.MxDataInfo">
 select * from db_trd.tb_trd_secu_order where order_status=6
  <if test="channelNo!= null" >
   and channel_no = #{channelNo,jdbcType=INTEGER}
  </if>
  <if test="reportNo!=null" >
   and report_no = #{reportNo,jdbcType=INTEGER}
  </if>
  <if test="companyNo!= null" >
   and company_no = #{companyNo,jdbcType=VARCHAR}
  </if>
  <if test="orderNo!=null" >
   and order_no = #{orderNo,jdbcType=INTEGER}
  </if>
  <if test="stockCode!=null" >
   and stock_code = #{stockCode,jdbcType=VARCHAR}
  </if>
 </select>

语句解析:

1、if语句的格式 ;

2、test中的字段 为parameterType中 com.pojo.QueryDetailReq 的对象 (入参)

3、resultType 为返回查询数据对象 (结果集)

补充:mabatis mapper文件中 使用if条件插入字段和数据

有时候我们插入数据库数据的时候,插入字段都是不确定的,那么我们也可以用if条件来过滤一些字段

废话不多说,直接上代码

<insert id="ORDER_I" parameterType="hashmap">
  insert into t_order
  <trim prefix="(" suffix=")" suffixOverrides=",">
   <if test="orderNo != null">
    orderNo,
   </if>
   <if test="serviceName != null">
    serviceName,
   </if>
   <if test="idcard != null">
    idcard,
   </if>
   <if test="name != null">
    name,
   </if>
   <if test="requestData != null">
    requestData,
   </if>
   <if test="responseData != null">
    responseData,
   </if>
   <if test="status != null">
    status,
   </if>
   <if test="updatedTime != null">
    updatedTime,
   </if>
   <if test="completionTime != null">
    completionTime,
   </if>
   <if test="bae007 != null">
    bae007,
   </if>
   <if test="operId != null">
    operId,
   </if>
   <if test="operName != null">
    operName,
   </if>
   <if test="remark != null">
    remark,
   </if>
  </trim>
  <trim prefix="values (" suffix=")" suffixOverrides=",">
   <if test="orderNo != null">
    #{orderNo},
   </if>
   <if test="serviceName != null">
    #{serviceName},
   </if>
   <if test="idcard != null">
    #{idcard},
   </if>
   <if test="name != null">
    #{name},
   </if>
   <if test="requestData != null">
    #{requestData},
   </if>
   <if test="responseData != null">
    #{responseData},
   </if>
   <if test="status != null">
    #{status},
   </if>
   <if test="updatedTime != null">
    #{updatedTime},
   </if>
   <if test="completionTime != null">
    #{completionTime},
   </if>
   <if test="bae007 != null">
    #{bae007},
   </if>
   <if test="operId != null">
    #{operId},
   </if>
   <if test="operName != null">
    #{operName},
   </if>
   <if test="remark != null">
    #{remark},
   </if>
  </trim>
 </insert>

经过测试,是可以实现的。

以上为个人经验,希望能给大家一个参考,也希望大家多多支持我们。如有错误或未考虑完全的地方,望不吝赐教。

(0)

相关推荐

  • 解决Mybatis中mapper.xml文件update,delete及insert返回值问题

    最近写了几个非常简单的接口(CRUD),在单元测试的时候却出了问题,报错如下: Caused by: org.springframework.beans.factory.UnsatisfiedDependencyException: Error creating bean with name 'messageListener': Unsatisfied dependency expressed through field 'reviewCheckInfoService'; nested exce

  • 详解Mybatis内的mapper方法为何不能重载

    动态代理的功能:通过拦截器方法回调,对目标target方法进行增强. 言外之意就是为了增强目标target方法.上面这句话没错,但也不要认为它就是真理,殊不知,动态代理还有投鞭断流的霸权,连目标target都不要的科幻模式. 注:本文默认认为,读者对动态代理的原理是理解的,如果不明白target的含义,难以看懂本篇文章,建议先理解动态代理. 1. 自定义JDK动态代理之投鞭断流实现自动映射器Mapper 首先定义一个pojo. public class User { private Intege

  • mybatis一对多两种mapper写法实例

    mybatis一对多两种mapper写法 第一种 <resultMap type="com.example.demo.model.TuserModel" id="extendMapper"> <id column="id" property="id" /> <result column="user_name" property="userName" />

  • Springboot通用mapper和mybatis-generator代码示例

    实现功能:根据数据库中的表,自动生成model.dao和对应的xml文件.xml中实现通用mapper中CURD功能 1.引入依赖 <properties> <mybatis.generator.version>1.3.7</mybatis.generator.version> <tk.mybatis.version>4.1.5</tk.mybatis.version> </properties> <dependencies&g

  • mybatis 多表关联mapper文件写法操作

    两张表SystemParam(系统参数表) Suit (主题) SystemParam 与 Suit 是多对一 Suit 的higerSuit字段是Suit 的父及主题id 是多对一,需要自连接查询,因为重名所以父表sql字段加别名 mapper方法 Systemparam selectJoinSuit(String strparamcode); Po类 public class Systemparam { //ManyToOne "主题" private Suit suitobj;

  • 浅谈mybatis mapper.xml文件中$和#的区别

    #{}表示一个占位符即?,可以有效防止sql注入.在使用时不需要关心参数值的类型,mybatis会自动进行java类型和jdbc类型的转换. #{}可以接收简单类型值或pojo属性值,如果传入简单类型值,#{}括号中可以是任意名称. <!-- 根据名称模糊查询用户信息 --> <select id="findUserById" parameterType="String" resultType="user"> select

  • mybatis的使用-Mapper文件各种语法介绍

    一.查询 mybatis自定义查询条件,queryString.queryMap.limit,Mapper文件写法如下: <select id="getByQueryParam" parameterType="com.systom.base.BaseDaoQueryParam" resultMap="BaseResultMap"> SELECT * FROM user WHERE 1 = 1 <if test="par

  • 在mybatis中使用mapper进行if条件判断

    目的: 在使用mybatis框架中mapper文件有自动生成,但有时需要自己添加sql语句进行开发,当遇到需要使用 if进行条件判断的时候该怎么写? 查询sql语句如下: <select id="queryData" parameterType="com.pojo.QueryDetailReq" resultType="com.pojo.MxDataInfo"> select * from db_trd.tb_trd_secu_ord

  • MyBatis 中使用 Mapper 简化代码的方法

    前面文章所写的增删改查是存在问题的.每执行一次 SQL,都要开启一次会话,并且需要提交并关闭,主要问题就是冗余代码过多,模板化代码过多. 例如,我想开发一个 UserDao,可能是下面这样: 简化前的 UserDao public class UserDao { private SqlSessionFactory sqlSessionFactory = SqlSessionFactoryUtils.getInstance(); public User getUserById(Integer id

  • es6中使用map简化复杂条件判断操作实例详解

    本文实例讲述了es6中使用map简化复杂条件判断操作.分享给大家供大家参考,具体如下: 复杂逻辑判断时需要写很多if/else,代码可读性较差,可以用es6新增的Map来简化代码 列举六种实例,逐步简化 /** * 按钮点击事件 * @param {number} status 活动状态:1 开团进行中 2 开团失败 3 商品售罄 4 开团成功 5 系统取消 */ const onButtonClick = (status) => { if (status == 1) { sendLog('pr

  • 解决mybatis中的mapper命名问题

    mybatis mapper命名问题 mapper文件中id命名最好首字母小写,避免让mybatis认为是一个类 <!--获取供应商列表--> <resultMap id="ProviderList" type="Provider"> <result property="id" column="id"/> <result property="proCode" col

  • 原理分析Java Mybatis中的Mapper

    目录 准备 1.pom文件 2.user类-数据库 3.实体类 4.dao 层 5.Mapper 文件 源码分析 1.断点 2.查看源码 总结 准备 1.pom文件 <dependencies> <!--mybatis坐标--> <dependency> <groupId>org.mybatis</groupId> <artifactId>mybatis</artifactId> <version>3.4.5&

  • 全面掌握Java中的循环控制语句与条件判断语句的使用

    循环控制 可能存在一种情况,当我们需要执行的代码块数次,通常被称为一个循环. Java有非常灵活的三循环机制.可以使用以下三种循环之一: while 循环 do...while 循环 for 循环 截至Java5,对增强的for循环进行了介绍.这主要是用于数组. while 循环 while循环是一个控制结构,可以重复的特定任务次数. 语法 while循环的语法是: while(Boolean_expression) { //Statements } 在执行时,如果布尔表达式的结果为真,则循环中

  • Mybatis中的mapper模糊查询语句LIKE

    目录 Mybatis mapper模糊查询语句LIKE mapper 模糊查询语句报错 Mybatis mapper模糊查询语句LIKE 最近做学校安排的课程设计作业,用到SSM框架,在自己写mapper代码是遇到了模糊查询的问题 困扰好久 下面是我解决这个问题的方法,其他网上好多方法我尝试过却没有实现 下面试sql语句 select * from goodsinfo where goodsname like '%' #{goodsname} '%' 注意代码中的空格 空格 空格 #{ } 方式

  • mybatis中的mapper.xml使用循环语句

    目录 mapper.xml使用循环语句 mapper.java,传的参数是map mapper.xml 参数,数组,list都行 mybatis xml循环语句 首先创建DAO方法 除了批量插入,使用SQL in查询多个用户时也会使用 mapper.xml使用循环语句 mapper.java,传的参数是map List<实体类> getList(Map<String,Object> paraMap); mapper.xml <!--select:对应sql的select语句,

  • MyBatis中#{}占位符与${}拼接符的用法说明

    1.关于#{}占位符 先来看以下的示例,该示例是MyBatis中的SQL映射配置文件(Mapper配置文件),在该配置中使用了#{}占位符. <?xml version="1.0" encoding="UTF-8" ?> <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mappe

  • Mybatis中Mapper标签总结大全

    一.标签分类 定义SQL语句 insert delete update select 配置关联关系 collection association 配置java对象属性与查询结果集中列名的对应关系 resultMap 控制动态SQL拼接 foreach if choose 格式化输出 where set trim 定义常量 sql 其他 include 二.标签总结 1. 基础SQL标签 1.1 查询select 标签属性 id 唯一的名称,对应dao中mapper的接口名称 paramterTy

随机推荐