mybatis 使用concat 模糊查詢方式

使用concat 模糊查詢

<select id="queryByKeyWord" resultType="com.mingdutech.xelerator.eln.dto.ApparatusDto">
        select distinct b.*
        from base_apparatus b
        left join base_apparatus_column c
        on b.ID = c.apparatus_id
        <if test="keyWord != null">
            <where>
                CONCAT( IFNULL(b.name,''),
                IFNULL(code,''),
                IFNULL(serial,''),
                IFNULL(location,''),
                IFNULL(remark,''),
                IFNULL(b.create_user,''),
                IFNULL(b.update_user,''),
                IFNULL(c.field_value,''),
                IFNULL(batch_no,'') )
                like CONCAT('%',#{keyWord},'%')
            </where>
        </if>
    </select>

concat() 函數用於將多個字符串拼接成一個字符串

本舉例

keyWord為空查詢所有,keyWord不為空,檢索所有contact中所有字段匹配的內容。

註意

所有字段需要IFNULL判斷,否則某字段為空可能會導致查詢結果丟失一條記錄

模糊查詢使用concat('%',#{str},'%')出錯

經過我一套亂七八糟毫無思路地查找後,發現不是mybatis的原因,原來是SQL server不支持concat函數,直接用加號連接就好

以上為個人經驗,希望能給大傢一個參考,也希望大傢多多支持WalkonNet。

推薦閱讀: