postgresql多选功能实现

一、背景介绍

在一所乡村小学,教师资源紧张,所以会出现一个教师身兼多职的情况,既是语文老师又是数学老师甚至还是体育老师,这个系统就是为各个班级分配老师,这样一个场景实现

二、代码实现及效果

后端country_teacher表数据和表结构:

在这里插入图片描述
前端大概页面:
初始页面
学科中英文对照表:前端传的是带中括号的英文,后端数据库存的是中文

美术语文英语数学体育
ArtChineseEnglishMathSport

由于前端勾选科目的时候是多选框,所以会有顺序的问题,比如说用户先勾选了英语再勾选了美术,那么后端接收到的参数就是

[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, SPORTString getName() {switch (this) {case ART: return '美术'case CHINESE: return '语文'case ENGLISH: return '英语'case MATH: return '数学'case SPORT: return '体育'}}
}

最终效果就是这样:
用户勾选了美术,那么下方就显示所有教美术的老师,即张三、赵六、唐八三位老师
在这里插入图片描述
用户勾选了英语、体育,那么下方就显示所有教英语和体育的老师,即王五、唐八两位老师
在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/576999.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

基于springboot实现校园周边美食探索及分享平台系统项目【项目源码+论文说明】计算机毕业设计

基于springboot实现园周边美食探索及分享平台系统演示 摘要 美食一直是与人们日常生活息息相关的产业。传统的电话订餐或者到店消费已经不能适应市场发展的需求。随着网络的迅速崛起,互联网日益成为提供信息的最佳俱渠道和逐步走向传统的流通领域,传统的…

Java学习记录第十三天

面向对象编程 核心思想就是OOP(面向对象编程) 面向过程&面向对象 面向过程思想 步骤清晰简单,第一步做什么,第二步做什么... 面对过程适合处理一些较为简单的问题 面向对象思想 物以类聚,分类的思维模式&…

Oracle 中部分不兼容对象迁移到 OceanBase 的处理方式

本文总结分析了 3 种 Oracle 对象和 OB 对象不兼容时的处理方法和提前统计发现的操作方式,在迁移前提前发现这类问题能有效避免在迁移过程中报错的问题。 作者:余振兴,爱可生 DBA 团队成员,热衷技术分享、编写技术文档。 爱可生开…

C++从入门到精通——缺省参数

缺省参数 前言一、缺省参数概念二、缺省参数分类位置参数的缺省参数全缺省参数半缺省参数 关键字参数的缺省参数函数指针的缺省参数lambda表达式 三、缺省参数的具体代码展示main.cpp 前言 缺省参数是在函数定义时指定的默认值,当调用函数时未提供该参数的值时&…

【Android Handler】从源码出发,一步步窥探Handler在Java层的数据结构关系和执行原理

文章目录 Example for useLooperHandler sendMessagemsg插入链表头Message p mMessages;msg.next p;mMessages msg; msg插入链表中间Message p mMessages;prev p;p p.next;msg.next p;prev.next msg; LooperpreparelooploopOncelooper和message的关系next message和han…

修改 RabbitMQ 默认超时时间

MQ客户端正常运行,突然就报连接错误, 错误信息写的很明确,是客户端连接超时。 不过很疑虑,为什么会出现连接超时呢?代码没动过,网络也ok,也设置了心跳和重连机制。 最终在官网中找到了答案&am…

AIGC重塑金融 | 大模型在金融行业的应用场景和落地路径

作者:林建明 来源:IT阅读排行榜 本文摘编自《AIGC重塑金融:AI大模型驱动的金融变革与实践》,机械工业出版社出版 目录 01 大模型在金融领域的 5 个典型应用场景 02 大模型在金融领域应用所面临的风险及其防范 03 AIGC 技术的科…

SAP gui 组服务器 提示 Error service sapmsPRD unknown

/etc/hosts 追加IP地址和域名的配对关系 /etc/services 追加 sapms[sid] 3601/tcp

ctf-36C3解析

一、环境 unbentu 这道题给了docker环境,gethub上面自己找 一个好用的linux全局切换梯子proxychains 二、开始解析 2.1初始 2.2编译 docker build . 2.3代理设置完毕 我试了一下代理还是不行,我们换源尝试一下 RUN sed -i s/deb.debian.org/mirro…

7 AOP事务管理

文章目录 6.1 Spring事务简介6.1.1 相关概念介绍6.1.2 转账案例-需求分析6.1.3 转账案例-环境搭建步骤1:准备数据库表步骤2:创建项目导入jar包步骤3:根据表创建模型类步骤4:创建Dao接口步骤5:创建Service接口和实现类步骤6:添加jdbc.properties文件步骤7:创建JdbcConfig配置类步…

element plus的el-image图片发布到nginx不显示

问题&#xff1a; <el-image alt""src"/img/month-b.png" class"card-icon"style"width: 89px;height: 89px;right: -7px;top: -5px;"/> 部署到nginx二级路由访问地址是&#xff1a; http://192.168.1.207/divided/# 这时候使用…

R语言赋值符号<-、=、->、<<-、->>的使用与区别

R语言的赋值符号有&#xff1c;-、、-&#xff1e;、&#xff1c;&#xff1c;-、-&#xff1e;&#xff1e;六种&#xff0c;它们的使用与区别如下: <-’&#xff1a;最常用的赋值符号。它将右侧表达式的值赋给左侧的变量&#xff0c;像一个向左的箭头。例如&#xff0c;x …