mybatis test标签如何判断值是否相等

mybatis test标签判断值是否相等

mybatis可以很方便生成动态sql,

常用的方式如下:

        <if test="id != null and id !=''">
            and id != #{id}
        </if>   

但是在实际使用过程中可能会需要对某个输入的值做具体判断,然后根据输入参数的值进行分支处理

<select id="xxxx" parameterType="map" resultMap="BaseResultMap">
         。。。。。。。
     <choose>
               <when test="hasAttach.toString() == '1'.toString()">
                   having  attachCount &gt;= #{hasAttach}
               </when>
               <otherwise>
                   having  attachCount = #{hasAttach}
               </otherwise>
           </choose>

鉴于这个mapper查询接口传入的参数为Map<String,Object>类型,如果不进行toString的转换的话默认是对进行进行的对比,因此就无法达到预期的比较字符串的效果。

mybatis if test标签、动态sql问题

之前用#{0}和#{1}虽然值能传到后台但一直不能正确校验,怎么改都无法校验成功。

错误代码:

这是因为:dao层(或mapper层)中没有用@Param(“”)正确传值。

修改后:

mybatis中也把0,1改成@Paran定义的值就可以了:

体验:细节很重要,不可忽略。

做毕设,为这个问题纠结两天,网上没有人提到这一点,耽误很久,以上为个人经验,希望能给大家一个参考,也希望大家多多支持我们。

(0)

相关推荐

  • MyBatis动态Sql之if标签的用法详解

    最近在读刘增辉老师所著的<MyBatis从入门到精通>一书,很有收获,于是将自己学习的过程以博客形式输出,如有错误,欢迎指正,如帮助到你,不胜荣幸! 本篇博客主要讲解如何使用if标签生成动态的Sql,主要包含以下3个场景: 1.根据查询条件实现动态查询 2.根据参数值实现动态更新某些列 3.根据参数值实现动态插入某些列 1. 使用if标签实现动态查询 假设有这样1个需求:根据用户的输入条件来查询用户列表,如果输入了用户名,就根据用户名模糊查询,如果输入了邮箱,就根据邮箱精确查询,如果同时输入了

  • mybatis 映射文件中if标签判断字符串相等的两种方式

    mybatis 映射文件中,if标签判断字符串相等,两种方式: 因为mybatis映射文件,是使用的ognl表达式,所以在判断字符串sex变量是否是字符串Y的时候, <if test="sex=='Y'.toString()"> <if test = 'sex== "Y"'> 注意: 不能使用 <if test="sex=='Y'"> and 1=1 </if> 因为mybatis会把'Y'解析为字

  • mybatis中<if>标签bool值类型为false判断方法

    昨天实现一个功能,根据文章的id或者别名查找文章. 起初采用mybatis的Example进行查询,对参数artName进行判断,如果是纯数字就byId查询,否则就by别名.由于查询文章的同时,需要关联查询文章分类标签,所以选择采用select语句映射的方式查询,但又不想写两个查询方法,就使用了mybatis中动态sql. /** * 查询文章 * @param artName id 或 别名 * @param byId 如果是 true 则按照id查询 * 否则 按照别名查询 * @retur

  • mybatis if标签使用总结

    在项目开发中,mybatis <if> 标签使用广泛,本文讲解if标签的两种使用方式 其一.使用 <if> 标签判断某一字段是否为空 其二.使用 <if> 标签判断传入参数是否相等 具体代码如下 数据库表结构和数据 实体类 package com.demo.bean; public class Commodity { private String name; private String date; public String getName() { return na

  • mybatis test标签如何判断值是否相等

    mybatis test标签判断值是否相等 mybatis可以很方便生成动态sql, 常用的方式如下: <if test="id != null and id !=''"> and id != #{id} </if> 但是在实际使用过程中可能会需要对某个输入的值做具体判断,然后根据输入参数的值进行分支处理 <select id="xxxx" parameterType="map" resultMap="Ba

  • 解决Mybatis中foreach嵌套使用if标签对象取值的问题

    目录 foreach嵌套使用if标签对象取值问题 大体格式 解决办法 代码如下 Mybatis if 语句嵌套 要求 foreach嵌套使用if标签对象取值问题 最近做项目过程中,涉及到需要在 Mybatis 中 使用 foreach 进行循环读取传入的查询条件,动态拼接SQL语句,接口传入的查询条件格式:{"advanceSearchList":[{"searchType":10,"searchText":"12"}]} ,

  • Mybatis的mapper.xml中if标签test判断的用法说明

    目录 mapper.xml中if标签test判断的用法 1. 字符串等于条件的两种写法 2. 非空条件的判断 3. 判断数组是否包含某个元素 mapper.xml <if test>书写时候的一些坑 1. 分页 2. 字符串形式的数据比较 mapper.xml中if标签test判断的用法 1. 字符串等于条件的两种写法 ① 将双引号和单引号的位置互换 <if test=' testString != null and testString == "A" '>  

  • mybatis if标签判断不生效的解决方法

    实际需求 <if test="computationRule == '1'"> FROM app_sz_bbb a </if> <if test="computationRule == '2'"> FROM app_ccc a </if> 这种情况不生效, 原因:mybatis是用OGNL表达式来解析的,在OGNL的表达式中,'0'会被解析成字符,java是强类型的,char 和 一个string 会导致不等,所以if

  • MyBatis常用标签以及使用技巧总结

    前言 MyBatis常用标签及标签使用技巧 MyBatis的常用标签有很多,比如 <sql id="">:预定义可以复用的sql语句 <include refid="">:根据id引用定义的sql语句 <trim>:空白补全,配合<if>标签使用 <if test="">:条件判断,该语句返回的true,则该标签内的语句就生效 <bind name="" val

  • mybatis if test条件判断语句中的判断问题分析

    目录 iftest条件判断语句中的判断问题 我在mybatis中定义的sql语句如下 或使用equals() mybatis中iftest判断大坑 使用Mybatis时,常常会判断属性是否为空 原因分析 if test条件判断语句中的判断问题 写这个主要是描述在mybatis中要注意的问题,很不幸,自己没注意,跳坑了. 我在mybatis中定义的sql语句如下 <if test="facilityOccupied != null and facilityOccupied != '' and

  • Mybatis foreach标签使用不当导致异常的原因浅析

    异常产生场景及异常信息 上周,由于在Mybatis的Mapper接口方法中使用实现了Map.Entry接口的泛型类,同时此方法对应的sql语句也使用了foreach标签,导致出现了异常.如下为异常信息: org.apache.ibatis.exceptions.PersistenceException: ### Error updating database. Cause: org.apache.ibatis.reflection.ReflectionException: There is no

  • MyBatis常用标签大全

    _parameter _parameter 表示当前传入的参数,如果查询的时候传入的参数只有一个,则使用 _parameter E getById(Integer id); <select id="getById" parameterType="int" resultMap="BaseResultMap"> SELECT * FROM 库名.表名 WHERE id = #{_parameter} </select> if判

  • python selenium 获取标签的属性值、内容、状态方法

    获取标签内容 使用element.attribute()方法获取dom元素的内容,如: dr = driver.find_element_by_id('tooltip') dr.get_attribute('data-original-title') #获取tooltip的内容 dr.text #获取该链接的text 获取标签属性 link=dr.find_element_by_id('tooltip') link.value_of_css_property('color') #获取toolti

随机推荐