星驰编程网

免费编程资源分享平台_编程教程_代码示例_开发技术文章

mybatis高级用法,避坑指南(mybatisplus高级用法)

我们mybatis中如何进行字符串的比较方式

正常情况下我们写 != 或者 ==的方式

这个出最初的写法

<if test="id != null and id != ''">
    and product_id = 1
</if>

我们看一个高级的用法方式

我们传入一个字符串的方式进行比较的方式

容易出现问题

<if test="id != 0">
    and product_id = 1
</if>

在传入值都为0或者都为inter的方式

但是现在传入的值是string 0

mybatis进行隐形转化

如果传入一个字符串

会出现错误

出现转化异常

Cause: java.lang.NumberFormatException: For input string: "xxxx"

现在我需要传入一个字符可以判断数字和字符串的方式

我们只能使用.equals的方式

但是这样还会出现一个问题

你会发现你传值为0始终不会走

and products = 1

<if test='id.equals("0")' >
    and product_id = 1
</if>



我们现在有俩个写法

一般写法的方式

传入的值不会走!id.equlas('0')

在equlas中加一个单引号的方式

  <if test="id !=null and !id.equals('2')">
                and product_id = 2
            </if>


第一个是双引号的方式

第二个是单引号的方式

只会传入字符串只会走单个引号的方式

我们这里传入1

按照取反的方式我们不会走1

我们现在走2的方式

单引号的方式

我们能看到应该不走2

但是查询2的方式

问题就是在equals中只能使用双引号的方式

如何使用其他那就无法进行判断了


<where>
    <if test=' id != null  and !id.equals("1")' >
        and product_id = 1
    </if>
    <if test="id !=null and !id.equals('2')">
        and product_id = 2
    </if>
    <if test='id.equals("xxxx")'>
        and product_id = 4
    </if>
</where>

我们一般使用单引号的方式比较多

但是使用双引号比较少的方式

高级方法我们使用equlas

可以进行更加高级查询的方式

总结一下

我们使用 id ! = '' 只能用普通的判断为空或者数据是否存在的方式

判断是否为数字的方式

mybatis会默认把string 0 为转化成数字的方式

进行判断

但是如果我们传入的数据有字符串和数字的方式

!= 就不实用

我们必须使用equlas 的方式进行判断

但是equlas中必须使用双引号进行判断

否则也会失效

因为默认传入的值就是双引号

在equals中加入单引号

无法进行判断

高级用法使用mybatis

控制面板
您好,欢迎到访网站!
  查看权限
网站分类
最新留言