Spring Boot 自定义应用开发框架九——基本增删改查“低代码”框架初设计2 未完待续

上一篇简单讲了下基础增、删、改、查基础操作的低代码处理的一种模式,而在实际项目中分页列表是最重要的一块,因为分页列表是每一个模块的切入点,基本所有的功能都是围绕分页列表展开,例如搜索、分组、导出、增、删、改等等。

分页列表功能大家应该都是非常熟悉的,后端传给前端的数据就只有2类,一类是要展示的所有列表信息数据,另一类就是分页的基本属性数据,如总条数,当前页码等。一般我们都会定义一个Page对象专门用于分页数据的处理。

数据查询

分页列表的数据查询一般都分成2种情况,一种是默认情况下最大范围的数据(一般不带搜索条件),另外一种就是用户通过搜索查询后的数据。我们在实现分页列表功能时,之前的常规做法都是在XML文件中根据搜索条件是否存在来拼接SQL语句,这样做有很多弊端,例如
1.功能的搜索非常多,那么XML中的SQL语句判断语句也会非常多,导致后期维护困难;
2.前端页面上搜索与后端的SQL中代码强匹配且单一,例如搜索中有一个字段是日期类型,理论上可以有7种搜索方式,如 大于、小于、等于、大于等于、小于等于、不等于、范围 。虽然可以给这个字段再新增一个不等式来解决这个问题,但如果这个分页列表不止一个日期,甚至还有数字类型字段查询,例如年龄、薪酬,工作年限等,这样做就非常不友好了。
以用户与角色表为例,查询用户列表,SQL如下
在这里插入图片描述
从上面的SQL中可以看出,页面上有3个搜索属性,分别为名字、年龄、薪酬,对应的SQL中也要写3个if,如果查询条件越多,那这里的判断也就越多。

页面展示

分页列表页面一般主要分为2个展示区,一个是操作功能区,另一个就是数据展示区域,如下图
在这里插入图片描述
上面的红框内就是操作功能区,主要是搜索、批量操作、分组等,下面的红框就是数据展示以及单条数据的操作。这里的最关键的就是功能区的大多数常规操作都是与分页相关联,例如搜索,分组,其实最终到后台都是分页的SQL语句的写法。按照常规的做法就是上面《数据查询》中图片里的做法,根据前端页面上的搜索条件来判断,这样做虽然也能实现分页搜索功能,但是缺点很多:
1.如果搜索条件有变更,前后端都需要更改
2.搜索条件比较单一,例如下拉列表,日期,数值型数据搜索
3.后期维护成本比较高
那我们有没有办法解决上面的问题的,答案肯定是的,通过上面的分析,我们要解决的问题有以下几点
1.搜索属性可以根据需要新增或剔取,而不用修改前端页面以及后端的代码、SQL语句
2.搜索条件表达式可以根据数据属性自动生存,例如字符串搜索是like,下拉列表有 =、in,数值与日期则有范围判断等等
3.新增、编辑页面的通过配置字段生成
只要能解决上面几点,那么大多数功能性页面就可以通过配置生成出来,前后端只需要根据固定流程生成代码即可,后端人员只需要编写分页的主体SQL语句即可,搜索条件与排序的SQL均通过前端提交的参数生成,而且对于后端来说,因为大部分模块流程都是一样的,完全可以根据数据表结构生成所有代码,最终开发人员需要做的只是在XML里编写分页的主体SQL语句。

最终效果

SQL 如下图所示,只要如下编写查询主体即可,相应的where语句与排序不需要填写
在这里插入图片描述
未完待续…

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

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

相关文章

MySQL的COUNT语句,竟然都能被面试官虐的这么惨!?

关于数据库中行数统计,无论是MySQL还是Oracle,都有一个函数可以使用,那就是COUNT 但是,就是这个常用的COUNT函数,却暗藏着很多玄机,尤其是在面试的时候,一不小心就会被虐。不信的话请尝试回答下…

通信工程考研英语复试专有名词翻译

中文英文频分多址Frequency Division Multiple Access码分多址Code Division Multiple Access时分多址Time Division Multiple Access移动通信mobile communication人工智能artificial intelligence水声通信Middle-Range Uwa Communication正交频分复用Orthogonal frequency di…

【数据结构入门】-二叉树的基本概念

个人主页:平行线也会相交 欢迎 点赞👍 收藏✨ 留言✉ 加关注💓本文由 平行线也会相交 原创 收录于专栏【数据结构初阶(C实现)】 今天的内容可是一个大头,比以往学的内容上了一个档次。大家对于这块内容一定…

Linux系统编程 - 基础IO(IO操作)

目录 预备知识 复习C文件IO相关操作 printf相关函数 fprintf snprintf 读取文件 系统文件IO操作 open函数 umask()函数 open函数返回值 预备知识 1.你真的理解文件原理和操作了吗?不是语言问题,是系统问题2.是不是只有C/C有文件操作呢&#x…

【Linux】进程理解与学习(Ⅰ)

环境:centos7.6,腾讯云服务器Linux文章都放在了专栏:【Linux】欢迎支持订阅🌹相关文章推荐:【Linux】冯.诺依曼体系结构与操作系统进程概念什么是进程?进程是什么?我们打开任务管理器可以看到有…

Vue项目实战 —— 后台管理系统( pc端 ) —— Pro最终版本

前期回顾 开源项目 —— 原生JS实现斗地主游戏 ——代码极少、功能都有、直接粘贴即用_js斗地主_0.活在风浪里的博客-CSDN博客JS 实现 斗地主网页游戏https://blog.csdn.net/m0_57904695/article/details/128982118?spm1001.2014.3001.5501 通用版后台管理系统,如果…

【Selenium自动化测试】滑动解锁与窗口截图、关闭

滑动解锁 滑动解锁是目前Web测试中最常遇到的,常见于登录验证之类的场景,针对滑动操作,webdriver提供了ActionChains类来处理此类场景的操作。下面通过两个例子来了解下如何使用。 # case1 from time import sleep from selenium import we…

Spring Boot 实现多文件上传

文件上传 Spring Boot代码 代码结构: Controller层 package com.yqifei.upload.controller;import io.swagger.annotations.Api; import org.springframework.web.bind.annotation.*; import org.springframework.web.multipart.MultipartFile;import javax.serv…

“提效”|教你用ChatGPT玩数据

ChatGPT与数据分析(二) 上文给简单聊了一下为什么ChatGPT不能取代数据分析师,本文我们来深入感受一下如何让GPT帮助数据分析师“提效”。 场景一:SQL取数 背景:多数数据分析师都要用SQL语言从数据库中提取数据&#x…

智能零售柜商品检测软件(Python+YOLOv5深度学习模型+清新界面)

摘要:智能零售柜商品检测软件用于识别零售柜常见商品,检测商品名和位置以了解销售情况,为零售柜商品智能检测和自动销售提供检测功能。本文详细智能零售柜商品检测软件,在介绍算法原理的同时,给出Python的实现代码、训…

自定义类型 (结构体)

文章目录📬结构体的声明🔎1.结构的基础知识🔎2.结构的声明🔎3.特殊的声明🔎4.结构的自引用🔎5.结构体变量的定义和初始化🔎6.结构体内存对齐🔎7.修改默认对齐数🔎8.结构体…

最强的Python可视化神器,你有用过么?

数据分析离不开数据可视化,我们最常用的就是Pandas,Matplotlib,Pyecharts当然还有Tableau,看到一篇文章介绍Plotly制图后我也跃跃欲试,查看了相关资料开始尝试用它制图。 1、Plotly Plotly是一款用来做数据分析和可视…

【DFS专题】深度优先搜索 “暴搜”优质题单推荐 10道题(C++ | 洛谷 | acwing)

文章目录题单一、模板 [极为重要]全排列DFS组合型DFS指数DFS二、专题烤鸡 (指数BFS)P1088 火星人 【全排列】P1149 火彩棒 [预处理 ]P2036 PERKETP1135 奇怪的电梯 暴力P1036 [NOIP2002 普及组] 选数 (组合)P1596 [USACO10OCT]Lake Counting …

ChatGPT 引领的 AI 革命爆发了,一起上车吧!

文章目录1. AI 革命爆发了2. 回顾 AI 历史3. 什么是 ChatGPT?4. 为什么你应该学习 AI ?5. 我们该如何学习 AI5.1 第一点是你要多尝试运行代码和修改代码。5.2 第二点是你要多去体验各类 AI 的应用5.3 第三点做头脑风暴,创造有趣新产品6. 我们…

你是真的“C”——进行动态内存分配库函数的使用详解

你是真的“C”——申请动态空间库函数的使用详解😎前言🙌一、为什么需要动态内存分配?💞free 函数😘malloc 库函数😘calloc 库函数😘realloc 库函数😘总结撒花💞&#x1…

【Java】7 再识数组|数组的基本操作

欢迎来到爱书不爱输的程序猿的博客, 本博客致力于知识分享,与更多的人进行学习交流 目前,已开了以下专栏,欢迎关注与指导 1️⃣Java基础知识系统学习(持续更文中…) 2️⃣UML的应知应会(已更完) 3️⃣MySQL的应知应会(持续更文中…) 4️⃣ 还有更多文章在主页,欢迎访…

【数据结构】用队列实现栈

💯💯💯 本篇总结利用队列如何实现栈的相关操作,不难观察,栈和队列是可以相互转化的,需要好好总结它们的特性,构造出一个恰当的结构来实现即可,所以本篇难点不在代码思维,…

应届生投腾讯,被面试官问了8个和 ThreadLocal 相关的问题。

问:谈一谈ThreadLocal的结构。 ThreadLocal内部维护了一个ThreadLocalMap静态内部类,ThreadLocalMap中又维护了一个Entry静态内部类,和Entry数组。 Entry类继承弱引用类WeakReference,Entry类有一个有参构造函数,参数…

树莓派Pico开发板I2C OLED显示模块接口与MicroPython编程

首先简要介绍I2C接口及I2C接口OLED显示模块,然后讲述Pico开发板I2C总线引脚及其与I2C总线OLED SSD1306显示模块的接口原理,最后给出Pico开发板控制OLED屏显示文字/图形的MicroPython程序实例。 一、I2C接口简介 I2C/IIC/I2C(Inter-Integrated…

联合体(共用体)

大数据搜索:共用体(union),也称为联合体,是用于(在不同时刻)保存不同类型和长度的变量,它提供了一种方式,以在单块存储区中管理不同类型的数据。 定义:联合也…
最新文章