postgresql多选功能实现代码

 更新时间:2024年03月26日 15:59:12   作者:xun-ming  
这篇文章主要介绍了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, SPORT
    String getName() {
        switch (this) {
            case ART: return '美术'
            case CHINESE: return '语文'
            case ENGLISH: return '英语'
            case MATH: return '数学'
            case SPORT: return '体育'
        }
    }
}

最终效果就是这样:
用户勾选了美术,那么下方就显示所有教美术的老师,即张三、赵六、唐八三位老师

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

到此这篇关于postgresql多选功能实现的文章就介绍到这了,更多相关postgresql多选内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • PostgreSQL处理时间段、时长转为秒、分、小时代码示例

    PostgreSQL处理时间段、时长转为秒、分、小时代码示例

    最近在操作数据库时,遇到频繁的时间操作,每次弄完了就忘了,今天痛定思痛,下定决心对postgres的时间操作进行一下总结,这篇文章主要给大家介绍了关于PostgreSQL处理时间段、时长转为秒、分、小时的相关资料,需要的朋友可以参考下
    2023-10-10
  • 如何使用PostgreSQL进行中文全文检索

    如何使用PostgreSQL进行中文全文检索

    PostgreSQL被称为是“最高级的开源数据库”,它的数据类型非常丰富,用它来解决一些比较偏门的需求非常适合。由于PgSQL国内的资料较少,所有本文将详细介绍此类问题,以便后来的同学能顺利使用PgSQL。
    2021-05-05
  • PostgreSQL之INDEX 索引详解

    PostgreSQL之INDEX 索引详解

    这篇文章主要介绍了PostgreSQL之INDEX 索引详解,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2021-02-02
  • 初识PostgreSQL存储过程

    初识PostgreSQL存储过程

    这篇文章主要介绍了初识PostgreSQL存储过程,本文讲解了PostgreSQL中存储过程的语法,并给出了一个操作实例,需要的朋友可以参考下
    2015-01-01
  • pgpool复制和负载均衡操作

    pgpool复制和负载均衡操作

    这篇文章主要介绍了pgpool复制和负载均衡操作,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2021-01-01
  • PostgreSQL 实现sql放入文件批量执行

    PostgreSQL 实现sql放入文件批量执行

    这篇文章主要介绍了PostgreSQL 实现sql放入文件批量执行,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2021-02-02
  • PostgreSQL并行计算算法及参数强制并行度设置方法

    PostgreSQL并行计算算法及参数强制并行度设置方法

    这篇文章主要介绍了PostgreSQL 并行计算算法,参数,强制并行度设置,本文通过示例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2022-04-04
  • PostgreSQL常用的备份方式总结

    PostgreSQL常用的备份方式总结

    这篇文章主要介绍了PostgreSQL的多种备份方法,包括逻辑备份和物理备份,以及归档日志备份,文中通过代码介绍的非常详细,需要的朋友可以参考下
    2025-02-02
  • CentOS 9 Stream 上安装 PostgreSQL 16的步骤

    CentOS 9 Stream 上安装 PostgreSQL 16的步

    在CentOS9Stream上安装PostgreSQL16,首先添加PostgreSQL官方仓库,然后禁用系统自带PostgreSQL版本,避免冲突,使用dnf命令安装PostgreSQL16,并初始化数据库,本文给大家介绍CentOS 9 Stream 上安装 PostgreSQL 16的步骤,感兴趣的朋友一起看看吧
    2024-11-11
  • 如何解决PostgreSQL执行语句长时间卡着不动不报错也不执行的问题

    如何解决PostgreSQL执行语句长时间卡着不动不报错也不执行的问题

    某日开发同事上报一sql性能问题,一条查询好似一直跑不出结果,查询了n小时,还未返回结果,这篇文章主要给大家介绍了关于如何解决PostgreSQL执行语句长时间卡着不动不报错也不执行问题的相关资料,需要的朋友可以参考下
    2024-02-02

最新评论