postgresql多选功能实现代码
一、背景介绍
在一所乡村小学,教师资源紧张,所以会出现一个教师身兼多职的情况,既是语文老师又是数学老师甚至还是体育老师,这个系统就是为各个班级分配老师,这样一个场景实现
二、代码实现及效果
后端country_teacher表数据和表结构:

前端大概页面:

学科中英文对照表:前端传的是带中括号的英文,后端数据库存的是中文
| 美术 | 语文 | 英语 | 数学 | 体育 |
|---|---|---|---|---|
| Art | Chinese | English | Math | Sport |
由于前端勾选科目的时候是多选框,所以会有顺序的问题,比如说用户先勾选了英语再勾选了美术,那么后端接收到的参数就是
[English][Art]
所以后端要做一个排序处理,就是做到不管前端传的顺序是什么,后端最终都是固定的顺序,同时保证在数据库中教师对应的科目字段顺序也是固定的,比如说这个教师教了英语和美术,那么数据库里存的就是
美术,英语
因为是按照它们的英文首字母升序排序的
以下为后端关键代码,语言为 groovy,和 java 类似:
def main(){
// def job = values['job'] // 入参
def job = "[Chinese][Math][English][Art][Sport]" // 模拟入参
if(job == null || job == ''){
return null
}
// 转义,添加逗号,分割为数组
def nJob = job.replaceAll('\\]\\[','\\],\\[')
def jobArr = nJob.split(',')
// 对数组进行首字母排序,
def sortArr = jobArr.sort()
def nArr = []
sortArr.eachWithIndex{
it,i -> {
// 删除掉[]
def item = it.replaceAll('\\]','').replaceAll('\\[','')
// 从枚举中获取中文对应学科名
nArr[i] = Job[item.toUpperCase()].name
}
}
// 定义模糊查询条件
def likeJob = ''
nArr.each{
likeJob += '%' + it
}
likeJob = likeJob + "%"
// dbUtil是数据库工具类,自行封装即可
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 '美术'
case CHINESE: return '语文'
case ENGLISH: return '英语'
case MATH: return '数学'
case SPORT: return '体育'
}
}
}最终效果就是这样:
用户勾选了美术,那么下方就显示所有教美术的老师,即张三、赵六、唐八三位老师

用户勾选了英语、体育,那么下方就显示所有教英语和体育的老师,即王五、唐八两位老师

到此这篇关于postgresql多选功能实现的文章就介绍到这了,更多相关postgresql多选内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!
相关文章
PostgreSQL 16 搭配 PgVector:Windows 11&nbs
PgVector助力PostgreSQL实现向量数据库功能,简化AI检索架构;支持多种向量类型与距离算法,轻松实现多媒体检索与个性化推荐;适合Windows及Linux环境部署,感兴趣的朋友跟随小编一起看看吧2026-05-05
PostgreSQL 中 VACUUM 操作的锁机制详细对比解析
PostgreSQL 提供了三种主要的 VACUUM 操作:AutoVACUUM、VACUUM 和 VACUUM FULL,它们在锁机制上有显著差异,下面给大家分享PostgreSQL 中 VACUUM 操作的锁机制详细对比解析,感兴趣的朋友一起看看吧2025-05-05
PostgreSQL 序列(Sequence) 与 Oracle 序列对比差异分
PostgreSQL 和 Oracle 都提供了序列(Sequence)功能,但在实现细节和使用方式上存在一些重要差异,下面给大家介绍PostgreSQL 序列(Sequence) 与 Oracle 序列对比差异分析,感兴趣的朋友一起看看吧2025-05-05


最新评论