广告
返回顶部
首页 > 资讯 > 数据库 >Mybatis——#{}和${}的区别
  • 361
分享到

Mybatis——#{}和${}的区别

mybatisjavamysql 2023-09-13 08:09:23 361人浏览 泡泡鱼
摘要

在使用mybatis的时候我们会使用到#{}和${}这两个符号来为sql语句传参数,那么这两者有什么区别呢? #{}是预编译处理,是占位符,${}是字符串替换,是拼接符 Mybatis在处理#{}

在使用mybatis的时候我们会使用到#{}和${}这两个符号来为sql语句传参数,那么这两者有什么区别呢?

  1. #{}是预编译处理,是占位符,${}是字符串替换,是拼接符

  2. Mybatis在处理#{}的时候会将sql中的#{}替换成?号,调用PreparedStatement来赋值
    如:

select * from user where name = #{userName};

设userName=yuze

日志我们可以看到解析时将#{userName}替换成了

select * from user where name = ?;

然后再把yuze放进去,外面加上单引号

  1. Mybatis在处理 的时候就是把 {}的时候就是把 {}替换成变量的值,调用Statement来赋值
    如:
select * from user where name = #{userName};

设userName=yuze

看日志可以发现就是直接把值拼接上去了

select * from user where name = yuze;

这极有可能发生sql注入,下面举了一个简单的sql注入案例
这是一条用户的账号、密码数据
在这里插入图片描述

当用户登录,我们验证账号密码是否正确时用这个sql:

username=yyy;passWord=123

select * from user where username=${username} and password=${password}

显然这条sql没问题可以查出来,但是如果有人不知道密码但是想登录账号怎么办

我们不需要填写正确的密码:

密码输入1 or 1=1,sql执行的其实是

select * from user where username='yyy' and password=1 or 1 =1
  1. #{}的变量替换是在DBMS中、变量替换后,#{}对应的变量自动加上单引号

  2. 的 变 量 替 换 是 在 D B M S 外 、 变 量 替 换 后 , {}的变量替换是在DBMS外、变量替换后, DBMS{}对应的变量不会加上单引号

  3. 使用#{}可以有效的防止sql注入,提高系统的安全

来源地址:https://blog.csdn.net/weixin_44688973/article/details/125671926

您可能感兴趣的文档:

--结束END--

本文标题: Mybatis——#{}和${}的区别

本文链接: https://www.lsjlt.com/news/405563.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • Mybatis——#{}和${}的区别
    在使用mybatis的时候我们会使用到#{}和${}这两个符号来为sql语句传参数,那么这两者有什么区别呢? #{}是预编译处理,是占位符,${}是字符串替换,是拼接符 Mybatis在处理#{}...
    99+
    2023-09-13
    mybatis java mysql
  • 【mybatis和mybatisplus的区别】
    MyBatis 和 MyBatis Plus 都是 Java 语言的持久层框架,但它们之间有以下几个区别: 功能特性: MyBatis 是一个基于 XML 配置文件和 SQL 语句的 ORM 框架,提...
    99+
    2023-09-07
    mybatis java
  • Mybatis中#和$的区别
    在使用mybatis框架开发项目编写SQL语句的时候,经常需要用到变量替换值,那么用来替换变量值的操作经常用到$和#这两个符号,同样在一些Java面试中也经常被问到它们的区别。那么它们在使用上面有什么区别呢?下面根据使用情况分析总结,两者的...
    99+
    2023-09-02
    大数据 java mybatis mysql
  • mybatis中的#和$的区别
    #相当于对数据 加上 双引号,$相当于直接显示数据  #将传入的数据都当成一个字符串,会对自动传入的数据加一个双引号。如:order by #user_id#,如果传入的值是111,那么解析成sql时的值为order by "11...
    99+
    2023-06-02
  • mybatis中#{}和${}的区别详解
    目录一、MyBatis中${}和#{}的区别1.1 ${}和#{}演示1.2 SQL注入问题1.3 ${}和#{}的区别1.4 #{}底层是如何防止SQL注入的?1.4.1 网上的答...
    99+
    2022-11-13
  • MyBatis中的#{}和${}有什么区别
    这篇文章主要介绍了MyBatis中的#{}和${}有什么区别,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。前言在MyBatis 的映射配置文件中,动态传递参数有两种方式:#{...
    99+
    2023-06-21
  • mybatis createcriteria和or的区别说明
    createcriteria和or的区别 mybatis generator插件生成的example中,有createcriteria和or方法,他们有什么区别呢? 通过源码,能很清...
    99+
    2022-11-12
  • MyBatis ofType和javaType的区别说明
    目录ofType和javaType的区别MyBatis笔记 javatype和ofTypeofType和javaType的区别 JavaType和ofType都是用来指定对象类型的,...
    99+
    2022-11-13
  • Hibernate和MyBatis的区别是什么
    这篇文章给大家分享的是有关Hibernate和MyBatis的区别是什么的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。Hibernate 和 MyBatis 的区别相同点都是对j...
    99+
    2022-10-19
  • mybatis collection和association的区别解析
    目录1.collection标签1.1 相关代码和运行结果1.2 collection部分源码解析1.3 <collection>和<association>...
    99+
    2022-11-13
  • Mybatis中#和$的区别是什么
    这篇文章主要介绍“Mybatis中#和$的区别是什么”,在日常操作中,相信很多人在Mybatis中#和$的区别是什么问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”Mybatis中#和$的区别是什么”的疑惑有所...
    99+
    2023-06-22
  • mybatis 中 #与$ 的区别?
    #表示的是使用了预编译,可以防止sql注入。而$则不是。使用#将传入的参数默认为字符串。而$则不会,传入的是什么就是什么。$一般用于传入数据库对象,例如表名。如果传入的是Date类型,则要用#。ps:在使用...
    99+
    2022-10-18
  • Hibernate和MyBatis有哪些区别
    这篇文章主要介绍“Hibernate和MyBatis有哪些区别”,在日常操作中,相信很多人在Hibernate和MyBatis有哪些区别问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大...
    99+
    2022-10-18
  • MyBatis中#{}和${}有哪些区别
    目录前言#{} 和 ${} 的区别#{} 和 ${} 的实例:假设传入参数为 1实例步骤一实例步骤二实例步骤三#{} 和 ${} 的大括号中的值#{} 和 ${} 在使用中的技巧和建...
    99+
    2022-11-12
  • mybatis和hibernate有哪些区别
    这篇文章主要介绍mybatis和hibernate有哪些区别,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完! mybatis是手写sql语句,存储过程,高级映射hibernate是自动生成sql语句支持存储过程和映射m...
    99+
    2023-06-03
  • 详解Mybatis中javaType和ofType的区别
    目录一. 背景描述二. 情景再现1. 实体类2.BookMapper.xml映射文件3. 核心配置4. 测试代码5. 修改实体类6. 添加映射文件BookTypeMapper.xml...
    99+
    2023-05-20
    Mybatis javaType和ofType
  • mybatis中${}和#{}取值的区别分析
    mybatis作为一个轻量级的ORM框架,应用广泛,其上手使用也比较简单;一个成熟的框架,必然有精巧的设计,值得学习。 在使用mybatis框架时,在sql语句中获取传入的参数有如下...
    99+
    2022-11-12
  • MyBatis ofType和javaType的区别是什么
    这篇文章主要介绍了MyBatis ofType和javaType的区别是什么的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇MyBatis ofType和javaType的区别是什么文章都会有...
    99+
    2023-06-29
  • Mybatis中resultType和resultMap有哪些区别
    本文小编为大家详细介绍“Mybatis中resultType和resultMap有哪些区别”,内容详细,步骤清晰,细节处理妥当,希望这篇“Mybatis中resultType和resultMap有哪些区别”文章能帮助大家解决疑惑,下面跟着小...
    99+
    2023-06-29
  • 一篇文章弄懂Mybatis中#和$的区别
    目录前言一:下面我们写个关于“#”的个sql,看能不能注入。1.正常传参2.拼接传参二:下面我们写个关于“$”的个sql,看能不能注入。1.正常传参2.拼接传参总结前言 在学校的时候...
    99+
    2022-11-12
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作