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.mzph.cn/news/779040.shtml

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

相关文章

深圳区块链交易所app系统开发,撮合交易系统开发

随着区块链技术的迅速发展和数字资产市场的蓬勃发展,区块链交易所成为了数字资产交易的核心场所之一。在这个快速发展的领域中,区块链交易所App系统的开发和撮合交易系统的建设至关重要。本文将探讨区块链交易所App系统开发及撮合交易系统的重要性&#…

JAR 文件规范详解

介绍 JAR文件是基于ZIP文件格式的一种文件格式,用来将许多文件整合成一个文件。一个JAR文件本质上是包含可选目录META-INF的zip文件,可以通过命令行jar工具或者在Java平台上使用java.util.jar中的API来创建。JAR文件的命名没有严格的要求,可…

基于单片机的智能交通灯控制系统设计

摘要:本文采用AT89C52 单片机设计了一款智能交通灯控制系统,该系统通过检测和比较南北方向、东西方向车流量的大小,灵活地调节交通灯的通行时间,达到对交通灯自动实时控制的目的。系统不但在传统模式下能够正常工作,还可以实现根据车流量自动调节交通信号灯的智能模式,以…

免费采集伪原创工具,采集伪原创软件

在内容创作领域,为了提高生产效率和节省时间,许多站长和网络写手会借助采集伪原创工具来生成大量文章。这些工具能够从网络上抓取内容,并通过一定的处理和修改,生成看起来与原始内容不同但意义相近的伪原创文章。以下将就采集伪原…

leetcode:392. 判断子序列

题目: class Solution { public:bool isSubsequence(string s, string t) {} }; 题解: 很巧妙的题解:循环遍历两个字符串,两个字符串都没遍完就继续遍历,字符串s先遍历完结果为true,字符串t先遍历完结果为…

Elasticsearch 向量搜索

目标记录 ["你好,我的爱人","你好,我的爱妻","你好,我的病人","世界真美丽"] 搜索词 爱人 预期返回 ["你好,我的爱人","你好,我的爱妻"] 示例代码…

故障排查指南:通过连接电脑查找iOS应用崩溃日志的有效技巧

在iOS应用开发过程中,调试日志和奔溃日志是开发者必不可少的工具。当iOS手机崩溃时,我们可以连接电脑并使用Xcode Console等工具来查看日志。然而,这种方式可能不够方便,并且处理奔溃日志也相当繁琐。克魔助手的出现为开发者带来了…

基于springboot实现图书个性化推荐系统项目【项目源码+论文说明】

基于springboot实现图书个性化推荐系统演示 摘要 本论文主要论述了如何使用JAVA语言开发一个图书个性化推荐系统,本系统将严格按照软件开发流程进行各个阶段的工作,采用B/S架构,面向对象编程思想进行项目开发。在引言中,作者将论…

Nodejs 16与 gitbook搭建属于你自己的书本网站-第一篇

最近想重新搭建一个网站来存放自己的相关知识点,并向网络公开,有个hexo博客其实也不错的,但是总感觉hexo很多花里胡哨的玩意,导致挂载的博客异常卡,这样反而不利于我自己回顾博客了,于是我就开始钻研这个鬼…

pyinstaller将文件内容打包到可执行文件本身中

本文使用创作助手。 要将文件内容打包到可执行文件本身中,可以使用PyInstaller的--add-data选项和pyz文件格式。以下是具体步骤: 将所有的图片和音频文件放入一个文件夹,例如resources文件夹。 在你的代码中,使用相对路径引用这…

computed计算属性、watch侦听器、生命周期

计算属性 点击查看 Vue文档 基础语法 多次使用计算属性,计算属性方法也只执行一次, 调用计算属性的方法不能加() 直接修改计算数学的值 计算属性不能通过双向绑定修改(默认不能改) 想要修改计算属性,就必须使用计…

LeetCode 206.反转链表

给你单链表的头节点 head ,请你反转链表,并返回反转后的链表。 示例 1: 输入:head [1,2,3,4,5] 输出:[5,4,3,2,1] 示例 2: 输入:head [1,2] 输出:[2,1] 示例 3: …

webpack项目打包console git分支、打包时间等信息 exec

相关链接 MDN toLocaleString child_process Node.js strftime 格式 代码 buildinfo.js const { execSync, exec } require("child_process"); // exec: 在 Windows 执行 bat 和 cmd 脚本// execSync 同步 // exec 异步// exec 使用方法 // exec(git show -s,…

SMBV100A罗德与施瓦茨SMBV100A信号源

181/2461/8938产品概述: 罗德与施瓦茨 SMBV100A 提供卓越的射频性能以及非常高的输出电平和较短的设置时间。同时,SMBV100A可配备内部基带发生器,以生成多种数字标准(例如LTE、LTE-Advanced、IEEE802.11ac、GNSS)。9 …

SpringBoot 优雅的发送邮件(附源码)

文章目录 前言一、简介1. 什么是 SMTP?2. 什么是 IMAP?3. 什么是 POP3?4. IMAP 和 POP3 协议有什么不同呢?5. 什么是 JavaMailSender 和 JavaMailSenderImpl?6. 如何通过 JavaMailSenderImpl 发送邮件?二、获取邮箱配置三、简单实例1. 引入依赖2. 配置邮箱信息3. 功能实现…

【C++杂货铺】内管管理

目录 🌈前言🌈 📁 C/C中内存分布 📁 new 和 delete的使用 📁 new 和 delete的优点 📁 new 和 delete的原理 📂 operator new 和 operator delete函数 📂 内置类型 &#x1f4c2…

Java中读取html文件转成String,展示在浏览器

这里写目录标题 第一章1.1&#xff09;pom中引入依赖和html文件示例1.2&#xff09;使用hutool工具包读取html文件转为string1.3&#xff09;页面显示 第一章 1.1&#xff09;pom中引入依赖和html文件示例 引入hutool工具包依赖 <dependency><groupId>cn.hutool&…

Vue 3与其他框架对比

Vue 3与其他框架对比 Vue.js自2014年发布以来,凭借轻量级、高性能和渐进式等特点,已成为了前端开发中最流行的框架之一。近期,Vue团队正式发布了Vue 3的稳定版本,带来了诸多改进和创新,进一步提升了Vue的开发体验和性能表现。本文将结合Vue 3的新特性,对比其与React、Angular等…

【C++程序员的自我修炼】基础语法篇(一)

心中若有桃花源 何处不是水云间 目录 命名空间 &#x1f49e;命名空间的定义 &#x1f49e; 命名空间的使用 输入输出流 缺省参数 函数的引用 引用的定义&#x1f49e; 引用的表示&#x1f49e; 引用的特性&#x1f49e; 常量引用&#x1f49e; 引用的使用场景 做参数 做返回值…

关于云墙的一些功能

功能介绍 产品功能功能解释应用识别在进行分析报文头的基础上&#xff0c;结合不同的应用协议特征库综合判断所属的应用监控统计对设备数据进行统计&#xff0c;并以柱状图、折线图、表格、报表、日志等方式呈现出来&#xff0c;帮助用户通过统计数据掌握设备状况&#xff0c;…