(转)模糊查询

原文链接:
https://blog.csdn.net/cx243698/article/details/103887670

概念

模糊查询即模糊检索,是指搜索系统自动按照用户输入关键词的同义词进行模糊检索,从而得出较多的检索结果。与之相反的是“精准搜索”。对于MyBatis来说大概有如下几种方式实现:①使用$占位符,②使用数据库函数concat,③使用 MyBatis的动态SQL标签<bind>,本文主要重点介绍第二种方法的实现。 

方法一

直接使用 % 拼接字符串,如 '%'#{name}'%' 或 "%"#{name}"%",单引号或双引号都可以。

注:使用${…}不能有效防止SQL注入,所以这种方式虽然简单但是不推荐使用!!!

<!--根据关键词模糊查询所有信息 -->
<select id="selectByKeyWord" resultType="com.inchlifc.entity.Admin">
    SELECT * FROM Admin
    <where>
        <if test="keyWord !=null">
            keyWord  LIKE '%${partNum}%'
        </if>
    </where>
</select>

 方法二

concat属于数据库函数,MySQL 和 Oracle 都支持,用于字符串连接,而且可以使用 # 作为占位符,防止 SQL 注入。

 Mapper文件

<!--根据产品件号模糊查询机信息 -->
<select id="selectInStockByPartNum" resultType="com.inchlifc.entity.InStock">
    SELECT * FROM in_stock
    <where>
        <if test="partNum!=null">
            partNum LIKE CONCAT('%', #{partNum}, '%')
        </if>
    </where>
    ORDER BY createTime desc
</select>

方法三

bind 元素可以从 OGNL 表达式中创建一个变量并将其绑定到上下文。使用 bind 标签就可以对某个字段进行'封装',比如给上面的 keyWord 字段两端各加一个百分号。

<!--根据关键词模糊查询所有信息 -->
<select id="selectByKeyWord" resultType="com.inchlifc.entity.Admin">
    SELECT * FROM Admin
    <bind name="keyword" value="'%' + keyword + '%'" />
    <where>
        <if test="keyWord !=null">
            keyWord  LIKE #{keyword}
        </if>
    </where>
</select>
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值