首页 > 其他分享 >mybatis中 #{keyword} , ${keyword} 什么区别

mybatis中 #{keyword} , ${keyword} 什么区别

时间:2023-07-20 09:22:06浏览次数:31  
标签:keyword 区别 占位 MyBatis 参数 SQL mybatis 参数值

${keyword}#{keyword} 是 MyBatis 中用于参数替换的两种不同的占位符形式,它们有以下区别:

  1. ${keyword}:这是一种简单的字符串替换占位符形式,它会将占位符 ${keyword} 直接替换为传入的参数值。例如,在 XML 配置文件中使用 ${keyword},相当于在 SQL 语句中直接拼接参数的字符串表示。这种方式存在 SQL 注入的风险,因为参数值将直接插入 SQL 字符串中,所以需要自行转义或过滤用户输入。

  2. #{keyword}:这是一种更安全的参数绑定占位符形式,它会自动将传入的参数进行预编译和类型处理,并使用参数占位符 ? 替代 #{keyword}。MyBatis 会通过预编译的方式将参数值传递给底层数据库,从而避免了 SQL 注入的风险。此外,#{} 还提供了更多的功能,比如自动类型转换、防止特殊字符转义等。

总结起来,${} 是简单的字符串替换,而 #{} 是参数绑定占位符。在使用参数时,为了安全性和可维护性,推荐使用 #{} 的方式。它不仅可以防止 SQL 注入攻击,还可以处理参数值的类型转换等问题,更适合在 MyBatis 中进行参数绑定。

  • 但上述图片中like使用,需要用$,#会报错

标签:keyword,区别,占位,MyBatis,参数,SQL,mybatis,参数值
From: https://www.cnblogs.com/pansidong/p/17567411.html

相关文章

  • springboot整合mybatis
    项目结构: 1.添加依赖<?xmlversion="1.0"encoding="UTF-8"?><projectxmlns="http://maven.apache.org/POM/4.0.0"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation="http://mave......
  • mybatis的generator 代码生成器(自动生成DAO,PO,XML)
    1.引入插件<!--mybatis代码自动生成插件--><plugin><groupId>org.mybatis.generator</groupId><artifactId>mybatis-generator-maven-plugin</artifactId><......
  • django中request.query_params.get()和 request.data.get()的区别
    params用于获取字符串,data:用于获取正文,post方法两个参数都可以使用,get方法只能使用params例如:name=request.query_params.get('name',None)如果URL的查询参数中包含了名为"name"的参数,那么request.query_params.get('name',None)将返回该参数的值。否则,将返回None......
  • 协程与多线程的区别
    多线程和协程处理任务的效率取决于具体的应用场景和实现方式。一般来说,协程比多线程更高效常见比较多线程:优点:多线程可以同时执行多个任务,适用于需要并行执行多个阻塞或计算密集型任务的场景。可以充分利用多核处理器的能力,提高整体的计算性能。......
  • 解决seata与mybatis的saveBatch事物管理器冲突问题
    报错:org.springframework.beans.factory.NoSuchBeanDefinitionException:Noqualifyingbeanoftype'org.springframework.transaction.TransactionManager'  重写方法即可service层/***批量保存**@parambaseChapterList*@return......
  • (转)Overlay和Underlay网络协议区别及概述讲解
    原文:https://www.cnblogs.com/fengdejiyixx/p/15567609.html本文分别介绍Overlay网络模型和Underlay网络模型。(一)Overlay网络模型跨主机网络意味着将不同主机上的容器用同一个虚拟网络连接起来。这个虚拟网络的拓扑结构和实现技术就是网络模型。物理网络模型中,连通多个物理网......
  • 二、集成MyBatis
    1.创建新模块 添加依赖1.1.pom.xml文件<?xmlversion="1.0"encoding="UTF-8"?><projectxmlns="http://maven.apache.org/POM/4.0.0"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="htt......
  • mybatis 中 if else 用法
    mybaits中没有else要用chosewhenotherwise代替下面就是MyBatis中的if....else...表示方法<choose><whentest="">//...</when><otherwise>//...</otherwise></choose> 例子<selecti......
  • Mybatis中传递多个参数的4种方法
    前言现在大多项目都是使用Mybatis了,但也有些公司使用Hibernate。使用Mybatis最大的特性就是sql需要自己写,而写sql就需要传递多个参数。面对各种复杂的业务场景,传递参数也是一种学问。下面给大家总结了以下几种多参数传递的方法。方法1:顺序传参法(不推荐)#{}里面的数字代表你......
  • 大语言模型的预训练4:指示学习Instruction Learning详解以及和Prompt Learning,In-cont
    大语言模型的预训练[4]:指示学习InstructionLearning:Entailment-oriented、PLMoriented、human-oriented详解以及和PromptLearning,In-contentLearning区别1.指示学习的定义InstructionLearning让模型对题目/描述式的指令进行学习。针对每个任务,单独生成指示,通过在若干个......