昨天犯了一个错,其实是前几天写的代码犯的错,今天发现的。这是原来的代码:

<update id="updateInfoByFoodId">
    update food set
  <if test="info != null">
    info=#{info, jdbcType=VARCHAR}
  </if>
  <where>
   <if test="foodId != null">
     food_id=#{foodId, jdbcType=BIGINT}
   </if>
  </where>
</update>

这段代码就是滥用if判断的典型了。如果foodId为空,那么food表info这一列的所有数据都会变成同一个值。这是代码逻辑上的错,这对数据库数据造成的破坏是毁灭性的。

有的时候,SQL不能执行其实是需要的,它是对数据的保护。所以去掉foodId的null判断:

<update id="updateInfoByFoodId">
    update food set
  <if test="info != null">
    info=#{info, jdbcType=VARCHAR}
  </if>
    where food_id=#{foodId, jdbcType=BIGINT}
</update>

写后台SQL的一些心得的更多相关文章

  1. 后台SQL注入实例

    简要描述: 汉庭连锁酒店后台SQL注入,可绕过登陆限制进入后台,可脱库. 详细说明: 问题发生在这个站点.http://miaosha.htinns.com/ 标题内没有写具体信息.因为怕发布后被人入 ...

  2. 将复杂查询写到SQL配置文件--SOD框架的SQL-MAP技术简介

    引言 今天看到一片热门的博客, .NET高级工程师面试题之SQL篇 ,要求找出每一个系的最高分,并且按系编号,学生编号升序排列.这个查询比较复杂,也比较典型,自从用了ORM后,很久没有写过SQL语句了 ...

  3. FOR ALL ENTRIES IN 与 INNER JOIN 写在一个SQL上影响效率

    SELECT likp~vbeln likp~lfart lips~werks likp~kunnr INTO CORRESPONDING FIELDS OF TABLE it_likps FROM ...

  4. 自己写的sql server触发器练练--高手请您跳过吧

    set ANSI_NULLS ONset QUOTED_IDENTIFIER ONgo ALTER TRIGGER [insertReplyToic] ON [dbo].[bbsReplyTopic] ...

  5. 基于c#+xaml的前台采用IE的js引擎写后台

    基于c#+xaml的前台采用IE的js引擎写后台的猜想 参考上一篇文章 基于js的开发wp8界面的猜想知道可以使用 js的window.external.notify调用c# c#可以用InvokeS ...

  6. 为了让开发者写MaxCompute SQL更爽,DataWorks 增强SQL 编辑器功能

    众所周知,数据开发和分析的同学每天都要花大量时间写MaxCompute SQL:Dataworks作为数据开发的IDE直接影响着大家的开发效率,这次新上线的Dataworks我们在编辑体验上做了很多工 ...

  7. dml语句就是你常写的sql语句,增删改查

    dml语句就是你常写的sql语句,增删改查

  8. php框架tp3.2.3和js写的微信分享功能心得,分享的标题内容图片自定义

    https://blog.csdn.net/weixin_42231483/article/details/81585322 最近用PHP的tp3.2.3框架和js写的微信分享功能心得,分享的标题内容 ...

  9. c# 怎样能写个sql的解析器

    c# 怎样能写个sql的解析器 本示例主要是讲明sql解析的原理,真实的源代码下查看 sql解析器源代码 详细示例DEMO 请查看demo代码 前言 阅读本文需要有一定正则表达式基础 正则表达式基础教 ...

随机推荐

  1. Cortex-M3学习日志(六) -- ADC实验

    上一次简单的总结了一下DAC方面的知识,好吧,这次再来总结一下ADC方面的东东.ADC即Analog-to-Digital Converter的缩写,指模/数转换器或者模拟/数字转换器.现实世界是由模 ...

  2. startup_LPC17XX.s 启动文件分析

    工程中startup_LPC17XX.s是M3的启动文件,启动文件由汇编语言写的,它的作用一般是下面这几个: 1)堆和栈的初始化 2)中断向量表定义 3)地址重映射及中断向量表的转移 4)设置系统时钟 ...

  3. powerpc e500系列,linux初始化的tlb汇编,添加人肉代码注释

    powerpc e500的内核启动,关于tlb的初始化可以说是重头戏.看懂这段代码后,powerpc的虚实映射基本不在话下. 这段初始化tlb要考虑的,主要是将boot可能初始化过的tlb全清零,然后 ...

  4. node.js的一些知识

    什么是node.js node.js是构建于chrome浏览器v8引擎上的一个js运行环境 可以解析和执行js代码 可以当做另一种上下文,脱离浏览器环境(后端)运行js代码,而代码解析就是基于V8引擎 ...

  5. Css攻克Selectors 一

    Selectors (选择器) ---------------参考MDN中css学习. 首先css选择器有很多,但总体概括起来的话有两种: 标签选择器(*是特殊情况),可但标签,也可上下文多标签: 属 ...

  6. CSS-DOM介绍

    三位一体的网页: 我们在浏览器里看到的网页其实是由以下三层信息构成的一个共同体: 1.结构层: 结构层是由HTML和XHTML之类的标记语言所构成的.所就是哪些出现在html标签里面的单词,对网页内容 ...

  7. AlarmManager类的应用

    1.AlarmManager,顾名思义,就是“提醒”,是Android中常用的一种系统级别的提示服务,可以实现从指定时间开始,以一个固定的间隔时间执行某项操作,所以常常与广播(Broadcast)连用 ...

  8. C# 如何从List集合当中取出子集合

    今天项目要求随机从数据库中随机取出若干条数据,放到首页.那么要如何随机取出这个子集合呢?本人向到的方法如下: 1.假设数据量很少,如我数据库中只有10条数据,而我要求随机取出8条.对于这种低数据量,大 ...

  9. AngularJS ng-class用法

    mark from https://my.oschina.net/gejiawen0913/blog/188547 ng-class是AngularJS预设的一个指令,用于动态自定义dom元素的css ...

  10. apache+mysql+php环境的手动搭建

    一.搭建Apache Http Server 官方下载地址:http://www.apachehaus.com/cgi-bin/download.plx 搭建环境:win10 64位 WIN10 64 ...