postgresql多选功能实现

一、背景介绍

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

二、代码实现及效果

美术语文英语数学体育
ArtChineseEnglishMathSport

后端country_teacher表数据和表结构:

在这里插入图片描述
前端大概页面:
初始页面

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

[English][Art]

所以后台要做一个排序处理,就是做到不管前端传的顺序是什么,后端最终都是固定的顺序,同时保证在数据库中教师对应的科目字段顺序也是固定的,比如说这个教师教了英语和美术,那么数据库里存的就是

美术,英语

因为是按照它们的英文首字母升序排序的

以下为后台关键代码:

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 '体育'
        }
    }
}

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

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

qemu+kvm的基本用法

qemukvm的基本用法 1. KVM和QEMU的关系2 QEMU的安装3 使用QEMU3.1 创建虚拟镜像文件3.2 创建虚拟机3.3 使用虚拟机 4 关于kvm用户权限问题 1. KVM和QEMU的关系 首先KVM(Kernel Virtual Machine)是Linux的一个内核驱动模块,它能够让Linux主机…

【项目】均衡代码评测

TOC 目录 项目介绍 开发环境 主要技术 项目实现 公共模块 日志 工具类 编译运行模块 介绍 编译 运行 编译和运行结合起来 业务逻辑模块 介绍 MVC模式框架 模型(Model) 视图(View) 控制器(Controller&#xff09…

【Linux】文件属性信息、文件目录权限修改

Linux文件属性信息 在 Linux 中,ls命令用于列出目录内容,并提供了许多参数以定制输出和显示不同类型的信息。以下是一些常用的ls命令参数 -a显示所有文件和目录,包括以.开头的隐藏文件。-l使用长格式列出文件和目录的详细信息,包…

基于 C++ STL 的图书管理系统213行

定制魏:QTWZPW,获取更多源码等 目录 一、实践项目名称 二、实践目的 三、实践要求 四、实践内容 五、代码框架参考 六、代码效果展示 七、完整代码主函数展示 一、实践项目名称 基于 C STL 的图书管理系统 二、实践目的 通过设计和实现一个基于…

Linux中的常用基础操作

ls 列出当前目录下的子目录和文件 ls -a 列出当前目录下的所有内容(包括以.开头的隐藏文件) ls [目录名] 列出指定目录下的子目录和文件 ls -l 或 ll 以列表的形式列出当前目录下子目录和文件的详细信息 pwd 显示当前所在目录的路径 ctrll 清屏 cd…

专业135+总分400+重庆邮电大学801信号与系统考研经验重邮电子信息与通信工程,真题,大纲,参考书。

今年分数出来还是比较满意,专业801信号与系统135,总分400,没想到自己也可以考出400以上的分数,一年的努力付出都是值得的,总结一下自己的复习心得,希望对大家复习有所帮助。专业课:(…

C/C++语言相关常见面试题总结

目录 const关键字的作用 volatile 关键字 #define和const有什么区别 decltype和auto的区别 extern 关键字的作用 如何避免野指针 C/C中的类型转换以及使用场景 什么是RTTI?其原理是什么? RTTI 的原理: C中引用和指针的区别 C11用过…

亮剑AIGC,紫光云能否胜人一筹?

【全球云观察 | 科技热点关注】 扎实创新每一步, 先人一步快人一步。 2023年全球科技行业最火的莫过于生成式AI,即Artificial Intelligence Generated Content。在迈向生成式AI的道路上,虽然说不上千军万马,但是国内…

Redis - hash 哈希表

前言 ⼏乎所有的主流编程语⾔都提供了哈希(hash)类型,它们的叫法可能是哈希、字典、关联数组、映射。在 Redis 中,哈希类型是指 value 本⾝⼜是⼀个键值对结构,形如 key "key",value { { fiel…

java设计模式(2)---六大原则

设计模式之六大原则 这篇博客非常有意义,希望自己能够理解的基础上,在实际开发中融入这些思想,运用里面的精髓。 先列出六大原则:单一职责原则、里氏替换原则、接口隔离原则、依赖倒置原则、迪米特原则、开闭原则。 一、单一职…

Linux环境基础开发工具yum,vim使用

目录 1.Linux 软件包管理器 yum1.1什么是软件包1.2关于 rzsz1.3注意事项1.4查看软件包1.5如何安装软件1.6如何卸载软件 2.Linux开发工具2.1Linux编辑器-vim使用2.1.1vim的基本概念2.1.2vim的基本操作2.1.3vim正常模式命令集2.1.4vim末行模式命令集2.1.5vim操作总结 2.2简单vim配…

成功案例|全基因组测序+GWAS联合分析揭示不同种族帕金森病的遗传同质性和异质性

发表期刊:npj Parkinson’s Disease 影响因子:8.7 测序方式:WGS 研究对象:人 1 研究背景 帕金森病(PD)是一种常见的与年龄相关的神经退行性疾病,其特征是运动迟缓、姿势不稳定、僵硬和静息…

面试八股——redis——缓存——缓存穿透、击穿、雪崩

HR:你在项目中的那些场景用到了redis? 1. 缓存穿透问题 (项目中使用的方法) 2. 缓存击穿 解决办法1:加互斥锁。大量并发时,先让一个人去查,其他人等着。这样剩下人就可在缓存直接获取值。&#…

软件应用,麻将馆棋牌室计时计费管理系统软件,在计时的时候可以使用灯控器智能控灯

软件应用,麻将馆棋牌室计时计费管理系统软件,在计时的时候可以使用灯控器智能控灯 一、前言 以下软件操作教程以佳易王棋牌计时计费软件V18.0为例说明,其他版本可以参考 件文件下载可以点击最下方官网卡片——软件下载——试用版软件下载 …

Perfetto Trace抓取

1. Perfetto简介 Perfetto 是一个用于 Android 系统的性能跟踪工具,可以帮助开发者分析系统性能和调试问题。 Perfetto 是 Android 10 中引入的全新平台级跟踪工具。这是适用于 Android、Linux 和 Chrome 的更加通用和复杂的开源跟踪项目。 在低于Android R的版本上…

高性价比不入耳运动耳机哪个牌子好?精心筛选五大高赞好物推荐

在现在的时代运动耳机已成为我们不可或缺的伴侣,而在众多的运动耳机品牌中,选择一款高性价比、佩戴舒适且不入耳的款式,往往能让我们在运动过程中享受更加纯粹的音乐体验,接下来,就让我们一起探索那些备受好评的不入耳…

RobotFrameWorkRIDE失败重试

一、方法一:修改源码 【方式】https://blog.csdn.net/qq_15158911/article/details/119077562 二、方式二:使用插件 【需要环境】robotframework>4.1Python>3.8RobotFrameWorkRIDE2.X 【操作】 1、安装robotframework-retryfailed pip insta…

CleanMyMac X 4.15.1 for Mac 最新中文破解版 系统优化垃圾清理工具

CleanMyMac X for Mac 是一款功能更加强大的系统优化清理工具,相比于 CleanMyMac 4.15.1来说,功能增加了不少,此版本为4.15.1官方最新中英文正式破解版本,永久使用,解决了打开软件崩溃问题,最新版4.15.1版本…

Java后端项目性能优化实战-群发通知

背景 公司群发通知模块性能存在问题,我进行全面的系统调优,系统处理能力大幅提升。 原发送流程 优化后的发送流程 优化的点 说明:以下问题基本都是压测过程遇到的,有些问题普通的功能测试暴露不了。优化目标:保证高…

Transformer的前世今生 day07(Masked Self-Attention

Masked Self-Attention 掩码自注意力 由于NLP中的生成模型,是一个一个的生成单词, 所以为了让自注意力也实现这个过程,就设计了掩码自注意力 掩码:在自注意力机制中,每个输入位置都会与其他位置进行注意力计算&#x…