在jeesite开源平台上写了一个SQL命令中心的功能

news2024/12/23 18:42:04

实现目的:

这个SQL命令中心,是因为老项目就有这个页面,主要的功能是根据写出的SQL语句查询数据,并且在查出的数据基础上直接修改更新,还有新增和删除的功能,这么一说跟plsql就一样一样的了;这页面本来是给运维的同事来用,而且他们还会用plsql和Navicat等SQL语言操作工具,领导要求新老版本尽量保持一致,所以只能照猫画虎,把一些功能在jeesite中重写一遍,不过这也算是重新理解一下原生的SQL语言查询的原理,就当是温故知新了!

我写的这版属于简化版,目前版本只有查询一项,可以实现简单和比较复杂的SQL语言查询功能,具体效果如下。

实现效果:

简单SQL版:单表查询。
在这里插入图片描述
复杂SQL版:多表联查,字段有重复时。
在这里插入图片描述
以上查询结果用的jeesite自带的dataGrid,带分页,可以上下页展示。

实现思路:

1.	首先是对照了老项目的页面展示,老项目的代码写的非常全面但是比较老,不能直接复制到开源框架中使用,所以决定直接手写类似的功能,把老项目当原型。
2.	目前经常使用Navicat工具,所以也对照着Navicat查询结果展示的样子,来进行实现。
3.	由于操作语句的不确定性,所以在jeesite中没有具体的实体类可以使用,只能使用jdbc方法进行SQL语句的操作,同时在后端整理字头字段,在前端通过循环展示。

可以参考之前写的: jeesite前后端不分离页面横表转纵表数据展示。

实现原理和代码:

1.	先创建功能所需的文件夹,手写补全所有文件,可以参考代码生成器生成的代码层级结构。
2.	后端代码实现,将一个整页面拆分为,一个主页面mainPage和多个页签页面tabPage,在主页面只保留查询条件,在页签页面只展示数据和其他操作;后端代码就会分成三部分,第一部分是总页面,第二部分是页签页面,第三部分是页签页面返回数据。
第一部分:
/**
     * @return String
     * @author FredHe
     * @date 2024/6/13 9:22
     * @description SQL命令中心展示页面
     */
    @RequestMapping("/commandCenterMain")
    public String sqlCommandCenterMain(SQLCommandCenter sqlCommandCenter, Model model) {
   
        model.addAttribute("sqlCommandCenter", sqlCommandCenter);
        return "modules/sqlcenter/sqlcommandcenter/sqlCommandCenterMain";
    }
第二部分:
/**
     * @return String
     * @author FredHe
     * @date 2024/7/4 16:57
     * @description 分页清单页签
     */
    @RequestMapping("/commandCenterPageList")
    public String commandCenterPageList(SQLCommandCenter sqlCommandCenter, Model model) {
   
        String jsonArrayString = "''";
        // 将数据保存到list中 使用键值对形式保存 并将结果展示到页面
        List<Map<String, Object>> columnList = new ArrayList<>();
        String sql = sqlCommandCenter.getSql();
        if (StringUtils.isNotBlank(sql)) {
   
            // 查出数据
            try {
   
                // 加载数据库驱动
                Class.forName(driver);
            } catch (ClassNotFoundException e) {
   
                e.printStackTrace();
                //throw new Exception("加载数据库驱动有误,请联系管理员!" + e.getMessage());
                return renderResult(Global.FALSE, "加载数据库驱动有误,请联系管理员!" + e.getMessage());
            }
            // 声明数据库连接、预编译语句资源对象
            try {
   
                Connection connection = DriverManager.getConnection(url, user, password);
                if (sqlCommandCenter.getPageSize() != null) {
   
                    sql += " and rownum <= ?"

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

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

相关文章

[OJ]平均串问题,存在超时问题未解决

众所周知&#xff0c;两个数a和b的平均数计算公式为(ab)/2。 实际上平均数也可以描述为&#xff1a;从较小的数依次遍历到较大的数&#xff0c;将遍历的数放入一个列表中&#xff0c;该列表的中心元素。例如&#xff1a;求 3和7的平均数&#xff0c;列表为{3,4,5,6,7}&#xff…

FPGA与ASIC:深入解析芯片设计的双子星

前言 在半导体世界里&#xff0c;FPGA&#xff08;Field-Programmable Gate Array&#xff0c;现场可编程门阵列&#xff09;与ASIC&#xff08;Application-Specific Integrated Circuit&#xff0c;专用集成电路&#xff09;是两种截然不同的芯片设计策略&#xff0c;各自在…

短视频矩阵系统,一键智能成片

在信息爆炸的时代&#xff0c;短视频以其短平快的特点迅速崛起&#xff0c;成为人们获取信息、娱乐消遣的重要渠道。然而&#xff0c;如何在这个竞争激烈的领域中脱颖而出&#xff0c;制作出吸引眼球的爆款视频呢&#xff1f;今天&#xff0c;我们就来揭秘一款神奇的短视频矩阵…

76.WEB渗透测试-信息收集- WAF、框架组件识别(16)

免责声明&#xff1a;内容仅供学习参考&#xff0c;请合法利用知识&#xff0c;禁止进行违法犯罪活动&#xff01; 内容参考于&#xff1a; 易锦网校会员专享课 上一个内容&#xff1a;75.WEB渗透测试-信息收集- WAF、框架组件识别&#xff08;15&#xff09; Php的Laraverl…

C语言 之 理解指针(4)

文章目录 1. 字符指针变量2. 数组指针变量2.1 对数组指针变量的理解2.2 数组指针变量的初始化 3. 二维数组传参的本质4. 函数指针变量4.1 函数指针变量的创建4.2 函数指针变量的使用 5. 函数指针数组 1. 字符指针变量 我们在前面使用的主要是整形指针变量&#xff0c;现在要学…

php--高级反序列化

&#x1f3bc;个人主页&#xff1a;金灰 &#x1f60e;作者简介:一名简单的大一学生;易编橙终身成长社群的嘉宾.✨ 专注网络空间安全服务,期待与您的交流分享~ 感谢您的点赞、关注、评论、收藏、是对我最大的认可和支持&#xff01;❤️ &#x1f34a;易编橙终身成长社群&#…

21 Python常用内置函数——zip()

zip() 函数用来把多个可迭代对象中的元素压缩到一起&#xff0c;返回一个可迭代的 zip 对象&#xff0c;其中每个元素都是包含原来的多个可迭代对象对应位置上元素的元组&#xff0c;最终结果中包含的元素个数取决于所有参数序列或可迭代对象中最短的那个。 可以这样理解这个函…

学习笔记(数据结构:队列)4

qt加库 队列&#xff1a; 队列是只允许在一段进行插入&#xff0c;而在另一端进行删除操作的线性表。 允许插入的称谓队尾&#xff0c;允许删除的一端队头。 顺序队列。 循环队列&#xff0c; 常用操作&#xff0c;入队&#xff0c;出队。 先进先出&#xff0c;FIFO 用&#x…

安装nfs和rpcbind设置linux服务器共享磁盘

1、安装nfs和rpcbind 1.1 检查服务器是否安装nfs和rpcbind&#xff0c;执行下命令&#xff0c;检查服务器是否安装过。 rpm -qa|grep nfs rpm -qa|grep rpcbind 说明服务器以安装了&#xff0c;如果没有就需要自己安装 2、安装nfs和rpcbind 将rpm安装包&#xff1a; libtirpc-…

【kubernetes】认识K8S基础理论

目录 1.背景 2.虚拟机、物理机与容器 3.K8S 基本概念 3.1 K8S 的特点 4.Kubernetes 集群架构与组件 4.1 核心组件 4.1.1 Master组件 4.1.2 配置存储中心 4.1.3 Node 组件 5.Kubernetes 核心概念 6.总结 1.背景 服务器经历了三次演变过程&#xff1a;物理机、虚拟机…

【北京迅为】《i.MX8MM嵌入式Linux开发指南》-第三篇 嵌入式Linux驱动开发篇-第五十八章 中断下文之tasklet

i.MX8MM处理器采用了先进的14LPCFinFET工艺&#xff0c;提供更快的速度和更高的电源效率;四核Cortex-A53&#xff0c;单核Cortex-M4&#xff0c;多达五个内核 &#xff0c;主频高达1.8GHz&#xff0c;2G DDR4内存、8G EMMC存储。千兆工业级以太网、MIPI-DSI、USB HOST、WIFI/BT…

跨越至智慧水利新时代:以科技创新为核心引擎,全面构建智能化水资源管理体系,显著提升水资源治理的智能化水平与高效治理能力,共筑可持续水生态未来

目录 一、智慧水利的概念与重要性 &#xff08;一&#xff09;智慧水利的概念 &#xff08;二&#xff09;智慧水利的重要性 二、智慧水利的关键技术 &#xff08;一&#xff09;物联网技术 &#xff08;二&#xff09;大数据技术 &#xff08;三&#xff09;云计算技术 …

Tekion 选择 ClickHouse Cloud 提升应用性能和指标监控

本文字数&#xff1a;4187&#xff1b;估计阅读时间&#xff1a;11 分钟 作者&#xff1a;ClickHouse team 本文在公众号【ClickHouseInc】首发 Tekion 由前 Tesla CIO Jay Vijayan 于 2016 年创立&#xff0c;利用大数据、人工智能和物联网等技术&#xff0c;为其汽车客户解决…

X00078-基于深度强化学习图神经网络的云工作流调度python

强化学习&#xff08;RL&#xff09;技术通过蒙特卡洛树搜索&#xff08;MCTS&#xff09;的加速&#xff0c;成功解决了多资源需求下的DAG问题&#xff0c;优化目标为缩短makespan。根据当前的计算资源和任务状态&#xff0c;MCTS算法被用来探索并选择最佳的动作&#xff0c;在…

【Linux】远程连接Linux虚拟机(MobaXterm)

【Linux】远程连接Linux虚拟机&#xff08;MobaXterm&#xff09; 零、原因 有时候我们在虚拟机中操作Linux不太方便&#xff0c;比如不能复制粘贴&#xff0c;不能传文件等等&#xff0c;我们在主机上使用远程连接软件远程连接Linux虚拟机后可以解决上面的问题。 壹、软件下…

快速搞定分布式RabbitMQ---RabbitMQ进阶与实战

本篇内容是本人精心整理&#xff1b;主要讲述RabbitMQ的核心特性&#xff1b;RabbitMQ的环境搭建与控制台的详解&#xff1b;RabbitMQ的核心API&#xff1b;RabbitMQ的高级特性;RabbitMQ集群的搭建&#xff1b;还会做RabbitMQ和Springboot的整合&#xff1b;内容会比较多&#…

The resource type Sheet does not implement java.lang.AutoCloseable

The resource type Sheet does not implement java.lang.AutoCloseable 修改一下 应该是【高版本JDK】切换集成到我这个项目【低版本 JDK 8】出错了

Ubuntu设置网络

进入网络配置文件夹 cd /etc/netplan 使用 vim 打开下的配置文件 打开后的配置 配置说明&#xff1a; network:# 网络配置部分ethernets:# 配置名为ens33的以太网接口ens33:addresses:# 为ens33接口分配IP地址192.168.220.30&#xff0c;子网掩码为24位- 192.168.220.30/24n…

【MySQL】:表操作语法大全

表内容的操作 增删改查 CRUD (create、retrieve、update、delete) 新增 基本语法 语法为&#xff1a; insert into 表名 values (值&#xff0c;值&#xff0c;值...);这里的列数和类型&#xff0c;要和表结构匹配插入中文的话&#xff0c;要确保数据库创建的时候要设置字…

Python 高阶语法

前言&#xff1a; 我们通过上篇文章学习了Python的基础语法&#xff0c;接下来我们来学习Python的高阶语法 1.初识对象 在Python中我们可以做到和生活中那样&#xff0c;设计表格、生产表格、填写表格的组织形式的 面向对象包含 3 大主要特性&#xff1a;  封装  继承 …