mybatis中的#和$的区别

  1. 将传入的数据都当成一个字符串,会对自动传入的数据加一个双引号。如:order by #user_id#,如果传入的值是111,那么解析成sql时的值为order by “111”, 如果传入的值是id,则解析成的sql为order by “id”.

  2. $将传入的数据直接显示生成在sql中。如:order by (user_id),如果传入的值是111,那么解析成sql时的值为order by user_id, 如果传入的值是id,则解析成的sql为order by id.

  3. 方式能够很大程度防止sql注入。

4.$方式无法防止Sql注入。

5.(方式一般用于传入数据库对象,例如传入表名. 6.一般能用#的就别用).

MyBatis排序时使用order by 动态参数时需要注意,用$而不是#

字符串替换
默认情况下,使用#{}格式的语法会导致MyBatis创建预处理语句属性并以它为背景设置安全的值(比如?)。这样做很安全,很迅速也是首选做法,有时你只是想直接在SQL语句中插入一个不改变的字符串。比如,像ORDER BY,你可以这样来使用:
ORDER BY ${columnName}
这里MyBatis不会修改或转义字符串。
重要:接受从用户输出的内容并提供给语句中不变的字符串,这样做是不安全的。这会导致潜在的SQL注入攻击,因此你不应该允许用户输入这些字段,或者通常自行转义并检查。

转自:http://weijun726.blog.163.com/blog/static/87342299201362652950398/

若转载请注明出处!若有疑问,请回复交流!

Original: https://www.cnblogs.com/jym-sunshine/p/6841644.html
Author: 一谦的视界
Title: mybatis中的#和$的区别

原创文章受到原创版权保护。转载请注明出处:https://www.johngo689.com/543453/

转载文章受原作者版权保护。转载请注明原作者出处!

(0)

大家都在看

  • nginx 反向代理

    nginx 反向代理 两边协议要一样,http的反向代理要http的 Original: https://www.cnblogs.com/agang-php/p/15687022….

    Java 2023年5月30日
    081
  • SpringSecurity 默认表单登录页展示流程源码

    SpringSecurity 默认表单登录页展示流程源码 本篇主要讲解 SpringSecurity提供的默认表单登录页 它是如何展示的的流程,涉及1.FilterSecurity…

    Java 2023年6月9日
    0112
  • java AWT弹球游戏

    java AWT弹球游戏 1 package io.guanghe; 2 3 import javax.swing.*; 4 import java.awt.*; 5 import…

    Java 2023年5月29日
    074
  • 线程锁和死锁

    公平锁和非公平锁 ==公平锁:先等待的线程先获得锁,先到先得,不能插队 ==非公平锁:能够线程插队的锁,根据一定策略来进行调度,可能时间片少的先调度,可以进行插队 1、线程死锁 (…

    Java 2023年6月5日
    072
  • 【特殊的阻塞队列】 java.util.concurrent.SynchronousQueue 源码分析

    404. 抱歉,您访问的资源不存在。 可能是网址有误,或者对应的内容被删除,或者处于私有状态。 代码改变世界,联系邮箱 contact@cnblogs.com 园子的商业化努力-困…

    Java 2023年6月9日
    075
  • JAVA设计模式-适配器模式

    JAVA设计模式-适配器模式 介绍 适配器模式是一种结构型模式,它主要解决接口之间的兼容问题。当我们需要使用某个类的接口时,但是这个类的接口目前并不符合我们使用需求,不能直接使用,…

    Java 2023年6月15日
    081
  • 【SpringCloud-Alibaba系列教程】8.一文学会使用sentinel

    Sentinel 介绍 随着微服务的流行,服务和服务之间的稳定性变得越来越重要。Sentinel 是面向分布式服务架构的流量控制组件,主要以流量为切入点,从流量控制、熔断降级、系统…

    Java 2023年6月5日
    099
  • 人到中年,做管理真的需要懂的管理必备知识

    课堂三点要求: 认真听讲,记笔记 * – 讲义电子版会给补充,不要急于找资料 – 跟着课堂节奏 积极参与课堂互动,远程依然有温度 * – 课堂提…

    Java 2023年6月16日
    082
  • Java 数组综合应用

    Java 数组综合应用 需求 已知有个升序的数组,要求插入一个元素,该数组顺序依然是升序, 随机生成10个1-100整数保存到数组,并降序打印及求平均值、最大值和最大值下标、并查找…

    Java 2023年6月5日
    0102
  • 从零开始实现放置游戏(十四)——实现战斗挂机(5)地图移动和聊天

    上一节添加了websocket组件,实现了前后端通信。后面我们只需要根据游戏的业务逻辑,逐步实现各种功能即可。 另外,在实现具体业务逻辑时,发现上一章设计的消息对象有些不合理,由于…

    Java 2023年6月5日
    0102
  • Java基础语法(二)

    Java基础语法(二) 合抱之木,生于毫末;九层之台,起于累土;千里之行,始于足下。 ——《道德经》 Java基础语法(二) – 十、用户交互 Scanner 类(引用…

    Java 2023年6月9日
    069
  • 抽象类和接口

    Loading Tips: 除非必须使用,否则不要用接口 和 抽象类(大多时候,常规类就可以解决问题) 在合理的范围内尽可能抽象,相比于抽象类,我们 更倾向于接口的使用 poste…

    Java 2023年6月15日
    0100
  • JVM详解

    一、JVM的位置及体系结构 JVM作用在操作系统之上,而Java程序作用在jvm之上,其他的程序则与jvm并列 二、类加载器,及双亲委派机制 1.类加载器 作用:加载Class文件…

    Java 2023年6月13日
    065
  • Java基础之变量、常量、作用域

    变量就是可以变化的量 Java是一种强类型语言,每个变量都必须声明其类型 Java变量是程序中最基本的存储单元,其要素包括变量名,变量类型和作用域 注意事项: 每个变量都有类型,类…

    Java 2023年6月8日
    084
  • 【Java学习】API接口数据规范

    在日常开发中,一个优雅的API,必须提供简单明了的响应值,然后根据状态码就可以大概知道问题的所在。这里主要整理一下HTTP状态码和自定义状态码。 1、HTTP状态码 当浏览者访问一…

    Java 2023年6月5日
    0102
  • 通过实例理解 RabbitMQ 的基本概念

    先说下自己开发的实例。 最近在使用 Spring Cloud Config 做分布式配置中心(基于 SVN/Git), 当所有服务启动后,SVN/Git 中的配置文件更改后,客户端…

    Java 2023年5月30日
    064
亲爱的 Coder【最近整理,可免费获取】👉 最新必读书单  | 👏 面试题下载  | 🌎 免费的AI知识星球