首页 > 数据库 >JavaWeb项目中动态拼接sql语句

JavaWeb项目中动态拼接sql语句

时间:2024-07-25 14:01:16浏览次数:15  
标签:语句 JavaWeb 前端 查询 拼接 sql where

业务需求描述:

图中的查询框在分条件查询用户信息列表时,前端可能会传回一个条件或多个条件,此时要对不同的条件进行sql语句的不同书写,前端传的情况有很多种,所以如果分情况写sql语句会比较死,并且不够灵活,而且书写的内容会很多,所以要想一种办法来进行不同情况的sql语句拼接。

参数接收描述:

前端页面写的from表单,value值是接收后端传过来的参数,用于回显数据。

 

绿色部分是接收前端传过来的参数,使用了一个三目运算符做判断,如果传过来的参数是空,则赋值一个空字符串。红色上半部分是获取用户列表集合以及角色列表集合, 下半部分是为了回显用户搜索时的信息,使用户查询一次后原有的查询条件能够继续保留。

语句拼接描述:

这是动态拼接sql语句的精髓部分,前面的都是为了铺垫此sql语句。在sql最后面写上where 1=1,此时相当于没有where条件,也就是name,loginname,sex,rid都为空的状态。如果四个参数之间有一个不为空则会进入到下面的if判断并且在where中拼接上if里面的sql语句。

语句拼接展示:

下图是拼接完sql并且在前端执行不同的查询时在idea控制台中所打印出的sql语句。

总结:

动态拼接sql语句的重点是要设置where 1=1,这样就能够在后面拼接and等条件,另外要注意拼接sql时的连接问题,注意单引号,双引号,加号等的位置,可先去数据库中查询,查询通过后继续向java中写sql代码。

标签:语句,JavaWeb,前端,查询,拼接,sql,where
From: https://blog.csdn.net/weixin_64922330/article/details/140685424

相关文章

  • gitlab12-postgresql-主备
    gitlab-postgresql-12.3一、简介1、gitlab仅支持postgresql数据库管理系统,因此,数据库服务器有两个选项可用于linux软件包安装:使用Linux软件包安装附带的打包PostgreSQL服务器(不需要配置,推荐)使用外部postgresql服务器,(需要配置,并且需要手动为数据库设定种子)2、本章节......
  • 一文了解MySQL索引机制
    接触MySQL数据库的小伙伴一定避不开索引,索引的出现是为了提高数据查询的效率,就像书的目录一样。某一个SQL查询比较慢,你第一时间想到的就是“给某个字段加个索引吧”,那么索引是什么?是如何工作的呢?一起静下心来,耐心看完这篇文章吧,干货不啰嗦,相信你一定会有所收获。一、索引模型模......
  • SQL Server 2019 中设置定时自动重启
    要在SQLServer2019中设置定时自动重启,可以使用Windows任务计划程序。下面是详细的步骤:步骤一:创建批处理文件打开记事本。输入以下内容:netstop"SQLServer(MSSQLSERVER)"netstart"SQLServer(MSSQLSERVER)"(如果使用的是命名实例,则需要将MSSQLSERVER替换为实......
  • Mysql中修改新创建用户的密码
    创建新用户时,新用户没有权限,所以自己无法修改成简单的密码(1)可以通过root用户给权限,让新用户自己修改:1.先进入root用户,mysql-uroot-p1234562.给新用户权限:grantallprivilegeson.to'新用户名'@'localhost'withgrantoption;(其中withgrantoption是让新用户......
  • SpringBoot + MyBatis 实现 MySQL 主从复制动态数据源切换
    概述在项目中的某些场景中,需要对数据库进行一些优化。常用的有如下的实现方法:读写分离、引入缓存技术、主从复制、分库分表等。今天来简单介绍一些如何在程序中实现动态切换数据源,可能某台服务器性能比较好,让流量多的方法执行切换到此数据源去操作等等。当然这种思想也可以扩展......
  • 使用python3拼接rgb.txt与depth.txt为associate.txt(适用于GCNV2_SLAM中TUM数据集的运
    这里以GCNV2_SLAM中TUM数据集的运行为例子:安装gnv2_slam可以参考:GCNv2_SLAM-CPU详细安装教程(ubuntu18.04)-CSDN博客首先下载数据集ComputerVisionGroup-DatasetDownload下载后通过该命令解压:tar-xvfrgbd_dataset_freiburg1_desk.tgz打开后,你可以发现:在该数据集......
  • SQL Server 数据表栏位新增
    ifnotexists(selectnamefromsyscolumnswherename='tod_no'andid=object_id('iebo09d12'))altertableiebo09d12addtod_novarchar(7)notnullconstraintDiebo09d12tod_nodefault''go这条SQL语句用于修改一个名为iebo09d12......
  • SQL Server 事务日志已满
    您收到的错误消息表明数据库'EastRiver'的事务日志已满,导致数据库操作失败。要解决这个问题,可以按照以下步骤操作:1.备份事务日志首先,备份事务日志以释放空间:BACKUPLOG[EastRiver]TODISK=N'C:\Backup\EastRiver_log.bak'GO2.收缩事务日志文件备份日志后,可以使用DBCC......
  • MySql数据表创建并新增数据
    --------------------------------Tablestructureforbs002h------------------------------DROPTABLEIFEXISTS`bs002h`;CREATETABLE`bs002h`(`id`bigint(20)NOTNULLAUTO_INCREMENT,`cr_time`datetime(6)NOTNULL,`rg_time`datetime(6)NOT......
  • Qt基础 | QSqlQueryModel 的使用 | QSqlQuery的使用
    文章目录一、QSqlQueryModel的使用1.主窗口类定义2.构造函数3.打开数据库3.1添加SQLite数据库驱动、设置数据库名称、打开数据库3.2设置数据模型、选择模型、界面组件与模型数据字段间的数据映射4.记录移动二、QSqlQueryModel和QSqlQuery联合使用1.主窗口Main......