Mybatis-模糊查询的俩种方法

简介: Mybatis-模糊查询的俩种方法

方法一: 使用CONCAT(like concat)

like concat (参数一,参数二,参数三):用于模糊查询,不推荐直接用like,所以用concat连接

1.参数一: 第一个基本上用 ‘%’

2.参数二: 传入的参数

3.参数三: 第三个基本上用 ‘%’(和第一个对应)

<if test="blockPushLog.blockName!=null and blockPushLog.blockName!=''">
     and b.BLOCK_NAME like CONCAT('%',#{blockPushLog.blockName},'%')
 </if>

方法二: 使用bind模糊查询(推荐优先使用)

bind(参数一,参数二):用于模糊查询

1.参数一: name:自定义名称,变量名,用于赋予like后面的名称

2.参数二: value: 传入的参数

<if test="null != username and '' != username">
                <bind name="username" value="'%'+username+'%'"/>
                username like #{username}
            </if>
            <if test="null != nickname and '' != nickname">
                <bind name="nickname" value="'%'+nickname+'%'"/>
                and nickname like #{nickname}
            </if>
            <if test="null != address and '' != address">
                <bind name="address" value="'%'+address+'%'"/>
                and address like #{address}
            </if>

两者区别

like concat :

(1).使用concat函数连接字符串,在mysql中这个函数支持多个参数,但是其他数据库不一定支持多个参数,因而兼容性弱;

(2)因为直接使用:(’%’+参数+ ‘%’),存在sql注入的情况下,也可以把你写的sql语句看成不同的部分分割来对待,即安全性差,容易遭到攻击

bind:(推荐优先使用)

(1) 各数据库通用,兼容性强

(2) 可以预防SQL注入(比like concat强),因而安全性也强

注:Oracle 数据库中写法略有区别

like concat(concat('%',#{xxxxx},'%'))
目录
相关文章
|
SQL XML Java
六、MyBatis特殊的SQL:模糊查询、动态设置表名、校验名称唯一性
六、MyBatis特殊的SQL:模糊查询、动态设置表名、校验名称唯一性
367 0
自定义SQL,可以利用MyBatisPlus的Wrapper来构建复杂的Where条件,如何自定义SQL呢?利用MyBatisPlus的Wrapper来构建Wh,在mapper方法参数中用Param注
自定义SQL,可以利用MyBatisPlus的Wrapper来构建复杂的Where条件,如何自定义SQL呢?利用MyBatisPlus的Wrapper来构建Wh,在mapper方法参数中用Param注
|
XML Java 数据库连接
Mybatis逆向工程的2种方法,一键高效快速生成Pojo、Mapper、XML,摆脱大量重复开发
【5月更文挑战第10天】Mybatis逆向工程的2种方法,一键高效快速生成Pojo、Mapper、XML,摆脱大量重复开发
344 6
若依修改,集成mybatisplus报错,若依集成mybatisplus,总是找不到映射是怎么回事只要是用mp的方法就找报,改成mybatisPlus配置一定要改
若依修改,集成mybatisplus报错,若依集成mybatisplus,总是找不到映射是怎么回事只要是用mp的方法就找报,改成mybatisPlus配置一定要改
|
SQL XML Java
关于mybatis-plus写自定义方法(自定义sql)
关于mybatis-plus写自定义方法(自定义sql)
1022 1
|
XML Java 数据库连接
调用mybatisplus的封装CURD方法出现报错
调用mybatisplus的封装CURD方法出现报错
128 0
|
XML SQL Java
Mybatis接口Mapper内的方法为啥不能重载吗
Mybatis接口Mapper内的方法为啥不能重载吗
180 0
|
SQL 存储 Kubernetes
Seata常见问题之mybatisplus的批量插入方法报SQL错误如何解决
Seata 是一个开源的分布式事务解决方案,旨在提供高效且简单的事务协调机制,以解决微服务架构下跨服务调用(分布式场景)的一致性问题。以下是Seata常见问题的一个合集
616 0
|
SQL Java 数据库连接
干翻Mybatis源码系列之第十一篇:Mybatis拦截器获取被拦截对象的方法和参数
干翻Mybatis源码系列之第十一篇:Mybatis拦截器获取被拦截对象的方法和参数