首页 > 数据库 >放弃where 1 = 1,使用更优雅的SQL条件拼接

放弃where 1 = 1,使用更优雅的SQL条件拼接

时间:2023-04-15 11:13:55浏览次数:28  
标签:标签 SQL 优雅 拼接 子句 where

列表接口,通常会有多个条件组合查询的业务场景。
映射至mapper.xml中就需要写where 1 = 1来拼接否则就会发生 select * from table where and column = 'value'的语法错误
如今的IDEA中,如果你设置了SQL方言,就会警告你where 1 = 1 始终为true


建议使用<where></where>标签来处理这种情况,此标签会只会在它包含的标签中有返回值的情况下才插入 where子句。并且若子句的开头为 and orwhere标签也会将它们去除


以上为实测截图,从右侧控制台执行的SQL语句中,可以发现子句中的首个and已被自动去除,是不是比1 = 1略显优雅呢?

标签:标签,SQL,优雅,拼接,子句,where
From: https://www.cnblogs.com/ashet/p/17320697.html

相关文章

  • 【原创】SQLSERVER 通过 newsequentialid() 获取有序Guid 的注意事项
    SQLSERVER2005版本开始,支持获取有序Guid,函数为:newsequentialid(),使用该函数注意事项:1、表存在对应类型:uniqueidentifier,可以设置default 为:newsequentialid() 来自动生成有序Guid2、字段类型为:uniqueidentifier时,值只能是36位有效格式的字符串,不能为其他格式或空的字符串,而......
  • MySQL存储过程入门使用
    一、存储过程概述存储过程的英文是StoredProcedure。它的思想很简单,就是一组经过预先编译的SQL语句的封装。执行过程:存储过程预先存储在MySQL服务器上,需要执行的时候,客户端只需要向服务器端发出调用存储过程的命令,服务器端就可以把预先存储好的这一系列SQL语句全部执行......
  • Net6+NLog 写入数据库 Sql Server为例
    这个百度一大片,到处不行,国外网站找也是有问题,官网文档也是有点操蛋。搞到现在ok了直接上代码。//Program.cs配置#region日志LogManager.LoadConfiguration(ParameterConfig.Nlog).GetCurrentClassLogger();builder.Logging.AddNLog(ParameterConfig.Nl......
  • 安装SQLServer20xx 提示:需要安装oracle JRE7 更新 51(64位)或更高版本2种解决办法
    这个报错我们有2种方式可以解决,一个是安装提示所说的JRE7,另外一种比较简单,就是不勾选相关功能就不会要求安装JRE了;一、安装OracleJRE7解决方法:先进下面这个网站安装JDK,安装好后配置环境变量,然后重新安装SQLServer2016即可http://www.oracle.com/technetwork/java/javase/do......
  • Sql Isolation Level
    隔离性(Isolation):与数据库中的事务隔离级别以及锁相关,多个用户可以对同一数据并发访问而又不破坏数据的正确性和完整性。但是并行事务的修改必须与其他并行事务的修改相互独立,隔离。但是在不同的隔离级别下,事务的读取操作可能得到的结果是不同的。隔离级别用于决定如何控制并......
  • python分段读取word文件数据到MySQL数据库和Java读取word数据到MySQL数据库
    1、python分段读取word文件数据到MySQL数据库示例:(注:此示例为读取某个文件夹下的所有文件,并对文件后缀名为doc的文件进行读取,并以文件名称为id完成对该word内容的插入。)#导入os模块importos#导入所需库importpymysqlfromdocximportDocument#path定义要获取的......
  • SQL_20230414
    SQL136每类试卷得分前3名找到每类试卷得分的前3名,如果两人最大分数相同,选择最小分数大者,如果还相同,选择uid大者。examination_info表idexam_idtagdifficultydurationrelease_timeexam_record表iduidexam_idstart_timesubmit_timescore解题思路首先......
  • mysqlhotcopy
    mysqlhotcopy是一个Perl脚本,最初由TimBunce编写并提供。它使用LOCKTABLES、FLUSHTABLES和cp或scp来快速备份数据库。它是备份数据库或单个表的最快的途径,但它只能运行在数据库目录所在的机器上。mysqlhotcopy只用于备份MyISAM。它运行在Unix和NetWare中。.与mysqldump备份不同,m......
  • docker01 flask-sqlalchemy flask-migrate使用 flask项目演示 docker介绍与安装
    今日内容详细目录今日内容详细1flask-sqlalchemy使用2flask-migrate使用3flask项目演示4docker介绍4.1什么是虚拟化4.2docker是什么4.3容器与虚拟机比较4.4Docker概念5docker安装1flask-sqlalchemy使用#集成到flask中,直接使用sqlalchemy,看代码#有个第三方flask-sq......
  • 使用 Mybatis 对 mysql 查询时间范围
    需求:1.传入开始时间(startTime)和结束时间(endTime),查询effective_time在区间[startTime,endTime]中的数据。Controller中的时间入参用String表示://查询接口,默认查询今年内的数据。@GetMapping(value="/getData")publicList<Demo>selectDemoData(@Req......