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

一个可以通过多个条件筛选的系统界面是如何实现的(springboot+mybatis)

比如我们有一个订单记录管理界面

条件可以通过订单号、商品名称、创建日期范围、价格范围。。。来进行筛选查询。

首先我们先确定数据库订单表(我这里就不做连表了,都放在一个表中)模拟一个订单表

order表

订单号商品名称创建日期价格地址用户
121飞机2023-03-23199bjxxx
212大炮2023-04-2329bjxxx

就比如我们有一个这样的订单表,

前端的话说一下思路,就不做演示了,我们将查询的每个字段当作参数传递给后端(我们可以通过order实体类来接受,此时要注意前端字段命名问题了,但是时间和价格都是一个范围,包括开始时间-结束时间,我们实体类中没有这个字段,此时我们就需要添加一个DTO来继承那个实体类,在DTO中添加这几个实体类中没有的但是我们查询过程中会用到的字段,通过DTO来接受参数,注意:前端通过JSON传入后端,后端通过@RequestBody接收)

如果不懂怎么写的可以去看下我的这个文章前后端交互问题

如果没什么特殊的业务操作我们的业务层和控制层基本不用写代码(记得时间要格式化);

实现条件查询做重要的的部分来了也就是我们的sql语句

这里我们使用mybatis的 .xml配置文件来写sql

这里sql中就用到动态拼接的方法,也就是<where> <if> ....

本文实现功能只用到了这两个,其他你们可以去了解

//这里的resultMap="BaseResultMap"可以改成resultType="DTO类的全路径"

<select id="selectOrder" resultMap="BaseResultMap">
        select
                tipo.id, tipo.prizes_name,tipo.Receive_address_id, tipo.create_time,
                tipo.Audit_time,
                tipo.integral, tipo.user_name
                from
                t_order tipo
        <where>
            '1'='1'
            <if test="prizesName != null and prizesName != ''">
                and tip.prizes_name = #{prizesName}
            </if>
            <if test="startIntegral != null and startIntegral != ''">
                <if test="endIntegral != null and endIntegral != ''">
                    and tip.prizes_integral between #{startIntegral} and #{endIntegral}
                </if>
            </if>
            <if test="changeStartTime != null and changeStartTime != ''">
                <if test="changeEndTime != null and changeEndTime != ''">
                    and tipo.create_time between #{changeStartTime} and #{changeEndTimestartTime}
                </if>
            </if>
        </where>
        order by tipo.create_time
    </select>

上面我们就通过动态拼接实现了按多条件查询的例子啦~,上面这种也可以不通过sql,直接在前端使用filter进行实现(可以提高用户体验,秒速查询)可以去看这个vue实现过滤器

http://www.lryc.cn/news/116664.html

相关文章:

  • WebRTC | 实现数据流的一对一通信
  • 基于MATLAB小波变换的信号突变点检测
  • JUC并发编程(JUC核心类、TimeUnit类、原子操作类、CASAQS)附带相关面试题
  • 个人用C#编写的壁纸管理器 - 开源研究系列文章
  • iTextSharp 生成PDF
  • 基于微信小程序的传染病酒店隔离平台设计与实现(Java+spring boot+MySQL+微信小程序)
  • vue3中用watch监听响应式数据的注意点
  • Jmeter(五) - 从入门到精通 - 创建网络计划实战和创建高级Web测试计划(详解教程)
  • 【单片机】51单片机,TLC2543,驱动程序,读取adc
  • 誉天HCIE-Cloud_Computing3.0课程简介
  • Unity之ShaderGraph 节点介绍 Procedural节点
  • 期权定价模型系列【1】—BSM通用式模型
  • HA3 SQL样本实验:一种混合计算查询的全新样本解决方案
  • Linux(Web与html)
  • SpringBoot 底层机制分析[上]
  • 电源控制--对数与db分贝
  • LeetCode 1749. 任意子数组和的绝对值的最大值(前缀和)
  • python爬虫相关
  • PAT(Advanced Level) Practice(with python)——1023 Have Fun with Numbers
  • springboot vue 初步集成onlyoffice
  • Win10语言设置 - 显示语言和应用语言
  • RxJava的前世【RxJava系列之设计模式】
  • sql 语句 字段字符串操作
  • 【网络工程】网络流量分析工具 Wireshark
  • 数据库总结
  • 虹科方案 | 成都大运会进行时,保障大型活动无线电安全需要…
  • 【C语言】扫雷 小游戏
  • Jmeter(六) - 从入门到精通 - 建立数据库测试计划(详解教程)
  • swagger 3.0 学习笔记
  • 07 |「异步任务」