当前位置: 首页 > article >正文

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

相关文章:

  • .NET MAUI进行UDP通信(二)
  • 具身智能研究报告
  • KNN算法学习实践
  • 【10.2】队列-设计循环队列
  • Tailwind CSS 正式发布了 4.0 版本
  • Padas进行MongoDB数据库CRUD
  • MySQL的COUNT语句,竟然都能被面试官虐的这么惨!?
  • 如何实现一个 APM watchdog
  • 通信工程考研英语复试专有名词翻译
  • 【数据结构入门】-二叉树的基本概念
  • Linux系统编程 - 基础IO(IO操作)
  • 【Linux】进程理解与学习(Ⅰ)
  • Vue项目实战 —— 后台管理系统( pc端 ) —— Pro最终版本
  • 【Selenium自动化测试】滑动解锁与窗口截图、关闭
  • Spring Boot 实现多文件上传
  • “提效”|教你用ChatGPT玩数据
  • Android 基础功能例子
  • 智能零售柜商品检测软件(Python+YOLOv5深度学习模型+清新界面)
  • 自定义类型 (结构体)
  • C# 支付宝接口在线收款退款
  • 最强的Python可视化神器,你有用过么?
  • 【DFS专题】深度优先搜索 “暴搜”优质题单推荐 10道题(C++ | 洛谷 | acwing)
  • ChatGPT 引领的 AI 革命爆发了,一起上车吧!
  • 你是真的“C”——进行动态内存分配库函数的使用详解
  • 【Java】7 再识数组|数组的基本操作
  • 【数据结构】用队列实现栈