最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Mysql使用concat函數(shù)實現(xiàn)關(guān)鍵字模糊查詢功能(列表數(shù)據(jù)過濾含前后端代碼)

 更新時間:2023年02月14日 09:31:30   作者:小花皮豬  
在我們的平時開發(fā)中經(jīng)常會遇到根據(jù)條件過濾列表數(shù)據(jù)項,今天在做自己項目的時候就遇到了這個問題,正好借著這個機會分享我的思路以及相關(guān)的代碼,對Mysql使用concat函數(shù)實現(xiàn)關(guān)鍵字模糊查詢功能感興趣的朋友一起看看吧

前言

不知道大家在開發(fā)中有沒有這樣的經(jīng)歷:根據(jù)條件過濾列表數(shù)據(jù)項。

這種的條件少的還好,比如根據(jù)姓名或者性別過濾,這樣不僅頁面會稍微美觀一些,對于sql的壓力以及后端的代碼量也是會輕松不少的。

但是條件多了,條件1,條件2,條件3…條件100,這時候后端的接口就會一個一個的if判斷,不斷的追加條件(做為后端開發(fā)深有體會,頭大)

我給大家簡單畫個圖,大家就明白了:

那么有沒有一種方式,可以又美化頁面,不增加使用者的視覺疲勞,又能做到只輸入一個關(guān)鍵字,就能將全部的數(shù)據(jù)按照輸入的關(guān)鍵字進行過濾,從而只留下符合關(guān)鍵字信息的呢。

當然有,今天在做自己項目的時候就遇到了這個問題,正好借著這個機會分享我的思路以及相關(guān)的代碼。

頁面布局

關(guān)于頁面布局,正如上述,我只需要留下一個輸入框,用來過濾列表數(shù)據(jù):

sql編寫

那sql就不能無腦使用xxx like xxx and xxx like xxx 這種格式了。

告訴大家一個小技巧,msql的模糊查詢是可以配合concat函數(shù)一起使用的。

具體sql格式為:

select a,b,c from table concat(a,b,c) like oncat('%',x,'%')

這樣就可以實現(xiàn),根據(jù)x這個值對a,b,c這三個字段進行過濾了。

下面是一個實戰(zhàn)的sql:

select id, sex, user_name,nick_name,birthday,image,account,password,phone,address,create_time,update_time,is_delete,status from t_user 
where concat(user_name,nick_name,birthday,account,phone,address,remark) like concat('%','雪','%')order by id desc

備注:查詢出的字段和concat的字段不一定非要是完全匹配的
比如你可以直接查詢a,b,c,d,e 但是只concat(a,e)也是可以的,不需要像union all那么嚴格

后端代碼

有個這個思路,代碼就簡單了,相關(guān)代碼如下:

controller

 @GetMapping(value = "/queryList")
    public Result queryList(String keyWord) {
        // 根據(jù)關(guān)鍵字模糊查詢展示列表數(shù)據(jù)
        return Result.ok(userService.queryUserInfo(keyWord));
    }

service/impl

 List<User>  queryUserInfo(String keyWord);

 public List<User> queryUserInfo(String keyWord) {
        return userMapper.queryUserInfo(keyWord);
    }

mapper/xml

 List<User> queryUserInfo(@Param("keyWord") String keyWord);
 <select id="queryUserInfo" resultType="com.wyh.entity.User">
        select
        id,
        sex,
        user_name,
        nick_name,
        birthday,
        image,
        account,
        password,
        phone,
        address,
        remark,
        create_time,
        update_time,
        is_delete,
        status
        from t_user
        <where>
            is_delete = 0
            <if test="keyWord !=null and keyWord !=''">
                and concat(id,sex,user_name,nick_name,birthday,image,account, password,phone, address,
                remark, create_time,update_time,is_delete,status) like concat( '%',#{keyWord},'%')
            </if>
        </where>
        order by id desc
    </select>

接口測試

這時候接口就寫完了,可以自己簡單測試下:

有參數(shù)

無參

前端代碼

接口寫完了,直接調(diào)用即可。

由于我前端代碼較多,大多數(shù)是和這個業(yè)務(wù)無關(guān)的代碼,所以下面只粘貼關(guān)鍵代碼,代碼格式可能不太多,自行調(diào)整即可

   <el-input v-model="keyWord" placeholder="請輸入關(guān)鍵字" clearable  class="keyWordText"></el-input>
   <el-button type="primary" icon="el-icon-search"  @click="queryUserList">搜索</el-button>


 data() {
    return {
        keyWord:'', // 輸入框關(guān)鍵字
    	userTableData: [], // 用戶列表
      },


  // 展示用戶列表    
  methods: {  
    queryUserList() {
       axios.get('http://localhost:9090/user/queryList', {
          // 傳遞的參數(shù)
          params: {
            keyWord:this.keyWord
          }
          // 回調(diào)函數(shù),一定要使用箭頭函數(shù),不然this的指向不是vue示例
          }).then(res =>{
            // 請求成功后的數(shù)據(jù)返回給用戶列表用于展示
             this.userTableData = res.data.data;
          }).catch(error =>{
             console.log(error)
          })
    }
   }
 mounted() {
    // 頁面加載就渲染用戶列表
    this.queryUserList();
  },

測試效果

既然代碼都寫完了,那就試試看吧,下面為幾個測試截圖:

坑:

經(jīng)過測試有一個坑,那就是如果concat中的字段值有空的,可能導致查詢不到該數(shù)據(jù),就會造成一個假象,明明數(shù)據(jù)和sql是對的,就是查不出來。

例如:

關(guān)于解決方案,目前的只想到一種,就是把數(shù)據(jù)填滿,盡量不要有空。

感覺這個方案不完善,如果你有好的主意,歡迎評論告訴我

總結(jié)

其實用起來還是挺方便簡單的,實際開發(fā)中還是要聽從產(chǎn)品或者項目總監(jiān)的為好。

到此這篇關(guān)于Msql使用concat函數(shù)實現(xiàn)關(guān)鍵字模糊查詢(列表數(shù)據(jù)過濾-附前后端代碼)的文章就介紹到這了,更多相關(guān)Msql concat函數(shù)模糊查詢內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • 從MySQL 5.5遷移到Mariadb 10.1.14所遇到的問題

    從MySQL 5.5遷移到Mariadb 10.1.14所遇到的問題

    這篇文章主要介紹了從MySQL 5.5遷移到Mariadb 10.1.14所遇到的問題的相關(guān)資料,需要的朋友可以參考下
    2016-08-08
  • Linux服務(wù)器中MySQL遠程連接的開啟方法

    Linux服務(wù)器中MySQL遠程連接的開啟方法

    今天在Linux服務(wù)器上安裝了msyql數(shù)據(jù)庫,在本地訪問的時候可以訪問,但是我想通過遠程的方式訪問的時候就不能訪問了,查詢資料后發(fā)現(xiàn),Linux下MySQL默認安裝完成后只有本地訪問的權(quán)限,沒有遠程訪問的權(quán)限,需要你給指定用戶設(shè)置訪問權(quán)限才能遠程訪問該數(shù)據(jù)庫
    2017-06-06
  • MySQL中存儲時間的最佳實踐指南

    MySQL中存儲時間的最佳實踐指南

    這篇文章主要給大家介紹了關(guān)于MySQL中存儲時間的最佳實踐,文中詳細介紹了哪種存儲時間的方式更好,對大家學習或者使用mysql具有一定的參考學習價值,需要的朋友可以參考下
    2021-07-07
  • mysql5.7單實例自啟動服務(wù)配置過程

    mysql5.7單實例自啟動服務(wù)配置過程

    這篇文章主要介紹了mysql5.7單實例自啟動服務(wù)配置的過程,附含配置源碼,有需要的朋友可以借鑒參考下,希望可以有所幫助,感謝閱讀
    2021-09-09
  • windows 安裝解壓版 mysql5.7.28 winx64的詳細教程

    windows 安裝解壓版 mysql5.7.28 winx64的詳細教程

    這篇文章主要介紹了windows 安裝解壓版 mysql5.7.28 winx64的詳細教程,本文通過圖文并茂的形式給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2020-12-12
  • mysql 行列轉(zhuǎn)換的示例代碼

    mysql 行列轉(zhuǎn)換的示例代碼

    這篇文章主要介紹了mysql 行列轉(zhuǎn)換的示例代碼,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2021-03-03
  • 淺談MySQL數(shù)據(jù)同步到 Redis 緩存的幾種方法

    淺談MySQL數(shù)據(jù)同步到 Redis 緩存的幾種方法

    本文主要介紹了淺談MySQL數(shù)據(jù)同步到 Redis 緩存的幾種方法,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2023-03-03
  • Mysql主從數(shù)據(jù)庫(Master/Slave)同步配置與常見錯誤

    Mysql主從數(shù)據(jù)庫(Master/Slave)同步配置與常見錯誤

    今天小編就為大家分享一篇關(guān)于Mysql主從數(shù)據(jù)庫(Master/Slave)同步配置與常見錯誤,小編覺得內(nèi)容挺不錯的,現(xiàn)在分享給大家,具有很好的參考價值,需要的朋友一起跟隨小編來看看吧
    2019-03-03
  • MySQL中使用去重distinct方法的示例詳解

    MySQL中使用去重distinct方法的示例詳解

    這篇文章主要介紹了MySQL中使用去重distinct方法的示例詳解。distinct用來查詢不重復記錄的條數(shù),distinct表示對后面的所有參數(shù)的拼接取 不重復的記錄,即查出的參數(shù)拼接每行記錄都是唯一的。地產(chǎn)感興趣的可以了解一下
    2020-07-07
  • 淺談InnoDB隔離模式的使用對MySQL性能造成的影響

    淺談InnoDB隔離模式的使用對MySQL性能造成的影響

    這篇文章主要介紹了InnoDB隔離模式的使用對MySQL性能造成的影響,作為基于MySQL的最出名的數(shù)據(jù)庫,InnoDB相關(guān)的性能問題一直是DBA關(guān)注的熱點,需要的朋友可以參考下
    2015-06-06

最新評論

连南| 华安县| 皮山县| 监利县| 屏东县| 英吉沙县| 乐都县| 阜宁县| 揭阳市| 富川| 临城县| 蒙城县| 兴仁县| 蓬溪县| 马关县| 綦江县| 江津市| 徐水县| 米易县| 广东省| 临猗县| 连山| 纳雍县| 莱芜市| 沧州市| 个旧市| 江门市| 新源县| 敦化市| 夏邑县| 永吉县| 平远县| 东至县| 新郑市| 南澳县| 西藏| 肥乡县| 敦化市| 西乌珠穆沁旗| 高州市| 平江县|