首页 > 其他分享 >在MyBatis中,`#{param}`和`${param}`是用于传递参数的两种不同方式,它们的主要区别在于处理方式和用途:

在MyBatis中,`#{param}`和`${param}`是用于传递参数的两种不同方式,它们的主要区别在于处理方式和用途:

时间:2024-12-22 18:58:22浏览次数:6  
标签:语句 方式 param 参数 SQL MyBatis 参数值

1. **`#{param}`(预处理参数)**:
   - `#{param}`是MyBatis中的参数占位符,它用于预处理(Prepared Statement)语句中的参数。
   - 当使用`#{param}`时,MyBatis会将参数值安全地传递给SQL语句,防止SQL注入攻击。
   - `#{param}`会自动处理参数的转义,确保传入的值被正确处理,例如,字符串值会被自动加上单引号。
   - `#{param}`支持使用MyBatis的类型处理器(Type Handler)来转换参数类型。
   - `#{param}`在MyBatis中是推荐的方式,因为它更安全,可以减少SQL注入的风险。

 

 2. **`${param}`(字符串替换)**:
   - `${param}`是MyBatis中的另一种参数占位符,它用于直接将参数值替换到SQL语句中。
   - 当使用`${param}`时,MyBatis会将参数值直接拼接到SQL语句中,没有预处理。
   - `${param}`不会自动转义参数值,因此如果参数值中包含SQL关键字或特殊字符,可能会导致SQL语句错误或SQL注入攻击。
   - `${param}`通常用于动态SQL,例如,当需要动态构建表名、列名或复杂的SQL片段时。
   - 使用`${param}`需要开发者确保参数值的安全性,避免SQL注入风险。

 

总结来说,`#{param}`是安全的参数传递方式,适用于大多数情况,而`${param}`则适用于需要动态构建SQL语句的特定场景,但需要开发者更加小心地处理参数值的安全性。在实际开发中,应尽可能使用`#{param}`来传递参数,以提高代码的安全性。
 

标签:语句,方式,param,参数,SQL,MyBatis,参数值
From: https://blog.csdn.net/aA_KyleSun/article/details/144650593

相关文章

  • tauri2中创建新的窗口方式,和tauri1不一样了哦
    看官方javascript的api文档:window|Tauri tauri中的rust文档:https://docs.rs/tauri/latest/tauri/index.htmltauri.config.json定义文档:Configuration|Tauritauri可用插件:tauri-appsrepositories·GitHub在前端页面创建窗口示例:import{Window}from"@tauri-ap......
  • Springmvc进一步学习(springmvc-mybatis):跳转不经过视图解析器、controller如何保存数
    上一章的springmvc回顾内容:1.springmvc框架:主要作用:处理客户的请求,并处理数据,以及响应客户。2.springmvc搭建流程:  [1]引入springmvc依赖。spring-webmvc  [2]编写springmvc配置文件。   1.包扫描<context:component-scanbasepackage=""/>   ......
  • mybatis笔记
    一、基础配置1、配置文件名:按一般约定名字为mybatis-config.xml2、配置文件中的子属性(标签)用途:properties:指定相关参数(如数据库的用户名,密码等)的文件名,类似指定一个xxxx.ini文件。 方便在mybatis-config.xml中用$(xxxx)取值。settings:配置mybatis的运行时行为,比较重要的一......
  • offset explorer如何安装?附获取方式
    前言大家好,我是小徐啊。我们在Java开发的时候,有时候需要进行大数据的开发,或者需要使用消息队列,这个时候,就需要用到kafka这个组件了。而对于我们平常运维来说,最好有一个可视化的连接kafka的工具。今天小徐就来介绍一款连接Kafka的工具,是offsetexplorer,介绍下windows下如何安装。......
  • MyBatis-Plus快速入门及详解(看这一篇就够了)
    简介黑马MyBatisPlus教程全套视频教程,快速精通mybatisplus框架(2022年版)基于MyBatisPlus(简称MP)完成标准的Dao开发MP是基于MyBatis框架基础上开发的增强型工具,旨在简化开发,提高效率MyBatis-Plus......
  • MyBatis之mappers详解
    要点环境准备因为从数据库中拿到的数据需要转换为实体类对象,所以需要定义一个pojo来接受和转换数据实体类(pojo)创建完成之后需要创建mapper接口,mapper接口就相当于原来的daomapper接口的命名和实体类名对应,因为myBatis有面向接口编程的功能,所以每当我们调用接......
  • 易优CMS中如何批量修改友情链接的打开方式?
    在易优CMS中,如果你需要批量修改大量友情链接的打开方式(例如,将所有链接统一设置为在新窗口中打开),可以通过以下步骤来实现。以下是详细的步骤和注意事项:进入后台管理:登录易优CMS后台,进入“友情链接”管理页面。选择需要修改的链接:在友情链接列表中,勾选需要批量修改的链接......
  • FileZilla如何安装?附获取方式
    前言大家好,我是小徐啊。我们在开发java应用的时候,一般都是需要连接linux服务器的。而连接服务器,其中的一大工具就是连接上去之后传输和下载文件。这其中有很多工具,其中有一个是FileZilla,今天小徐就来介绍下如何安装FileZilla。文末附获取方式。如何安装FileZilla首先,我们需要双......
  • MyBatis-Plus分页拦截器,源码的重构(重构total总数的计算逻辑)
     1.1创建ThreadLocal工具类(作为业务逻辑结果存放类)packageorg.springblade.sample.utils;publicclassQueryContext{ privatestaticfinalThreadLocal<Long>totalInThreadLocal=newThreadLocal<>(); publicstaticvoidsetTotalIn(longtotalIn){ totalInT......
  • Spring事务的实现方式和实现原理
    前言:Spring事务的本质其实就是数据库对事务的支持,没有数据库的事务支持,spring是无法提供事务功能的。Spring只提供统一事务管理接口,具体实现都是由各数据库自己实现,数据库事务的提交和回滚是通过redolog和undolog实现的。Spring会在事务开始时,根据当前环境中设置的隔离级......