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。
推薦閱讀:
- mybatis中的字符串拼接問題
- mybatis中mapper.xml文件的常用屬性及標簽講解
- mybatis 有時update語句執行無效的解決方案
- mybatis mapper.xml 區間查詢條件詳解
- MyBatis中關於SQL的寫法總結