postgresql多選功能實現(xiàn)代碼
一、背景介紹
在一所鄉(xiāng)村小學(xué),教師資源緊張,所以會出現(xiàn)一個教師身兼多職的情況,既是語文老師又是數(shù)學(xué)老師甚至還是體育老師,這個系統(tǒng)就是為各個班級分配老師,這樣一個場景實現(xiàn)
二、代碼實現(xiàn)及效果
后端country_teacher表數(shù)據(jù)和表結(jié)構(gòu):
前端大概頁面:
學(xué)科中英文對照表:前端傳的是帶中括號的英文,后端數(shù)據(jù)庫存的是中文
美術(shù) | 語文 | 英語 | 數(shù)學(xué) | 體育 |
---|---|---|---|---|
Art | Chinese | English | Math | Sport |
由于前端勾選科目的時候是多選框,所以會有順序的問題,比如說用戶先勾選了英語再勾選了美術(shù),那么后端接收到的參數(shù)就是
[English][Art]
所以后端要做一個排序處理,就是做到不管前端傳的順序是什么,后端最終都是固定的順序,同時保證在數(shù)據(jù)庫中教師對應(yīng)的科目字段順序也是固定的,比如說這個教師教了英語和美術(shù),那么數(shù)據(jù)庫里存的就是
美術(shù),英語
因為是按照它們的英文首字母升序排序的
以下為后端關(guān)鍵代碼,語言為 groovy,和 java 類似:
def main(){ // def job = values['job'] // 入?yún)? def job = "[Chinese][Math][English][Art][Sport]" // 模擬入?yún)? if(job == null || job == ''){ return null } // 轉(zhuǎn)義,添加逗號,分割為數(shù)組 def nJob = job.replaceAll('\\]\\[','\\],\\[') def jobArr = nJob.split(',') // 對數(shù)組進(jìn)行首字母排序, def sortArr = jobArr.sort() def nArr = [] sortArr.eachWithIndex{ it,i -> { // 刪除掉[] def item = it.replaceAll('\\]','').replaceAll('\\[','') // 從枚舉中獲取中文對應(yīng)學(xué)科名 nArr[i] = Job[item.toUpperCase()].name } } // 定義模糊查詢條件 def likeJob = '' nArr.each{ likeJob += '%' + it } likeJob = likeJob + "%" // dbUtil是數(shù)據(jù)庫工具類,自行封裝即可 return dbUtil.findBySql("select name,subject,id,username from country_teacher where deleted = 0"+ " and subject like ('$likeJob')") } enum Job { ART, CHINESE, ENGLISH, MATH, SPORT String getName() { switch (this) { case ART: return '美術(shù)' case CHINESE: return '語文' case ENGLISH: return '英語' case MATH: return '數(shù)學(xué)' case SPORT: return '體育' } } }
最終效果就是這樣:
用戶勾選了美術(shù),那么下方就顯示所有教美術(shù)的老師,即張三、趙六、唐八三位老師
用戶勾選了英語、體育,那么下方就顯示所有教英語和體育的老師,即王五、唐八兩位老師
到此這篇關(guān)于postgresql多選功能實現(xiàn)的文章就介紹到這了,更多相關(guān)postgresql多選內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
PostgreSQL處理時間段、時長轉(zhuǎn)為秒、分、小時代碼示例
最近在操作數(shù)據(jù)庫時,遇到頻繁的時間操作,每次弄完了就忘了,今天痛定思痛,下定決心對postgres的時間操作進(jìn)行一下總結(jié),這篇文章主要給大家介紹了關(guān)于PostgreSQL處理時間段、時長轉(zhuǎn)為秒、分、小時的相關(guān)資料,需要的朋友可以參考下2023-10-10PostgreSQL 實現(xiàn)sql放入文件批量執(zhí)行
這篇文章主要介紹了PostgreSQL 實現(xiàn)sql放入文件批量執(zhí)行,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2021-02-02PostgreSQL并行計算算法及參數(shù)強(qiáng)制并行度設(shè)置方法
這篇文章主要介紹了PostgreSQL 并行計算算法,參數(shù),強(qiáng)制并行度設(shè)置,本文通過示例代碼給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下2022-04-04CentOS 9 Stream 上安裝 PostgreSQL 16的步
在CentOS9Stream上安裝PostgreSQL16,首先添加PostgreSQL官方倉庫,然后禁用系統(tǒng)自帶PostgreSQL版本,避免沖突,使用dnf命令安裝PostgreSQL16,并初始化數(shù)據(jù)庫,本文給大家介紹CentOS 9 Stream 上安裝 PostgreSQL 16的步驟,感興趣的朋友一起看看吧2024-11-11如何解決PostgreSQL執(zhí)行語句長時間卡著不動不報錯也不執(zhí)行的問題
某日開發(fā)同事上報一sql性能問題,一條查詢好似一直跑不出結(jié)果,查詢了n小時,還未返回結(jié)果,這篇文章主要給大家介紹了關(guān)于如何解決PostgreSQL執(zhí)行語句長時間卡著不動不報錯也不執(zhí)行問題的相關(guān)資料,需要的朋友可以參考下2024-02-02