电脑知识|欧美黑人一区二区三区|软件|欧美黑人一级爽快片淫片高清|系统|欧美黑人狂野猛交老妇|数据库|服务器|编程开发|网络运营|知识问答|技术教程文章 - 好吧啦网

您的位置:首頁技術文章
文章詳情頁

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

瀏覽:131日期:2023-02-18 16:43:35
目錄
  • 前言
  • 頁面布局
  • sql編寫
  • 后端代碼
  • 接口測試
  • 前端代碼
  • 測試效果
  • 總結

前言

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

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

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

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

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

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

頁面布局

關于頁面布局,正如上述,我只需要留下一個輸入框,用來過濾列表數(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那么嚴格

后端代碼

有個這個思路,代碼就簡單了,相關代碼如下:

controller

 @GetMapping(value = "/queryList")    public Result queryList(String keyWord) {// 根據(jù)關鍵字模糊查詢展示列表數(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">selectid,sex,user_name,nick_name,birthday,image,account,password,phone,address,remark,create_time,update_time,is_delete,statusfrom 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è)務無關的代碼,所以下面只粘貼關鍵代碼,代碼格式可能不太多,自行調(diào)整即可

   <el-input v-model="keyWord" placeholder="請輸入關鍵字" clearable ></el-input>   <el-button type="primary" icon="el-icon-search"  @click="queryUserList">搜索</el-button> data() {    return {keyWord:"", // 輸入框關鍵字    	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是對的,就是查不出來。

例如:

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

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

總結

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

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

標簽: MySQL
主站蜘蛛池模板: 圆形振动筛_圆筛_旋振筛_三次元振动筛-河南新乡德诚生产厂家 | 网架支座@球铰支座@钢结构支座@成品支座厂家@万向滑动支座_桥兴工程橡胶有限公司 | 雷冲击高压发生器-水内冷直流高压发生器-串联谐振分压器-武汉特高压电力科技有限公司 | 粉末包装机,拆包机厂家,价格-上海强牛包装机械设备有限公司 | LED太阳能中国结|发光红灯笼|灯杆造型灯|节日灯|太阳能灯笼|LED路灯杆装饰造型灯-北京中海轩光电 | 成都装修公司-成都装修设计公司推荐-成都朗煜装饰公司 | 微学堂-电动能源汽车评测_电动车性能分享网 | 制样机-密封锤式破碎机-粉碎机-智能马弗炉-南昌科鑫制样 | 智能门锁电机_智能门锁离合器_智能门锁电机厂家-温州劲力智能科技有限公司 | 热闷罐-高温罐-钢渣热闷罐-山东鑫泰鑫智能热闷罐厂家 | 河南不锈钢水箱_地埋水箱_镀锌板水箱_消防水箱厂家-河南联固供水设备有限公司 | 透平油真空滤油机-变压器油板框滤油机-滤油车-华之源过滤设备 | 宽带办理,电信宽带,移动宽带,联通宽带,电信宽带办理,移动宽带办理,联通宽带办理 | 有源电力滤波装置-电力有源滤波器-低压穿排电流互感器|安科瑞 | 聚丙烯酰胺_阴离子_阳离子「用量少」巩义亿腾厂家直销,售后无忧 聚合甘油__盐城市飞龙油脂有限公司 | 小型高低温循环试验箱-可程式高低温湿热交变试验箱-东莞市拓德环境测试设备有限公司 | 无轨电动平车_轨道平车_蓄电池电动平车★尽在新乡百特智能转运设备有限公司 | 不锈钢螺丝 - 六角螺丝厂家 - 不锈钢紧固件 - 万千紧固件--紧固件一站式采购 | 蒸压釜_蒸养釜_蒸压釜厂家-山东鑫泰鑫智能装备有限公司 | 懂研帝_专业SCI论文润色机构_SCI投稿发表服务公司 | 超声波电磁流量计-液位计-孔板流量计-料位计-江苏信仪自动化仪表有限公司 | 品牌策划-品牌设计-济南之式传媒广告有限公司官网-提供品牌整合丨影视创意丨公关活动丨数字营销丨自媒体运营丨数字营销 | 无缝钢管-聊城无缝钢管-小口径无缝钢管-大口径无缝钢管 - 聊城宽达钢管有限公司 | 安徽成考网-安徽成人高考网| 上海软件开发-上海软件公司-软件外包-企业软件定制开发公司-咏熠科技 | 昆山PCB加工_SMT贴片_PCB抄板_线路板焊接加工-昆山腾宸电子科技有限公司 | 济南侦探调查-济南调查取证-山东私家侦探-山东白豹调查咨询公司 密集架|电动密集架|移动密集架|黑龙江档案密集架-大量现货厂家销售 | FAG轴承,苏州FAG轴承,德国FAG轴承-恩梯必传动设备(苏州)有限公司 | 【甲方装饰】合肥工装公司-合肥装修设计公司,专业从事安徽办公室、店面、售楼部、餐饮店、厂房装修设计服务 | wika威卡压力表-wika压力变送器-德国wika代理-威卡总代-北京博朗宁科技 | 杭州标识标牌|文化墙|展厅|导视|户内外广告|发光字|灯箱|铭阳制作公司 - 杭州标识标牌|文化墙|展厅|导视|户内外广告|发光字|灯箱|铭阳制作公司 | 数字展示在线_数字展示行业门户网站 | UV-1800紫外光度计-紫外可见光度计厂家-翱艺仪器(上海)有限公司 | 武汉刮刮奖_刮刮卡印刷厂_为企业提供门票印刷_武汉合格证印刷_现金劵代金券印刷制作 - 武汉泽雅印刷有限公司 | 钢格栅板_钢格板网_格栅板-做专业的热镀锌钢格栅板厂家-安平县迎瑞丝网制造有限公司 | 山东成考网-山东成人高考网 | 哈希PC1R1A,哈希CA9300,哈希SC4500-上海鑫嵩实业有限公司 | 求是网 - 思想建党 理论强党| 金属回收_废铜废铁回收_边角料回收_废不锈钢回收_废旧电缆线回收-广东益夫金属回收公司 | 蒸汽热收缩机_蒸汽发生器_塑封机_包膜机_封切收缩机_热收缩包装机_真空机_全自动打包机_捆扎机_封箱机-东莞市中堡智能科技有限公司 | 室内室外厚型|超薄型|非膨胀型钢结构防火涂料_隧道专用防火涂料厂家|电话|价格|批发|施工 |