详解Mybatis中的 ${} 和 #{}区别与用法

 更新时间:2020年07月22日 10:23:03   作者:陈汐01  
这篇文章主要介绍了Mybatis中的 ${} 和 #{}区别与用法,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下

Mybatis 的Mapper.xml语句中parameterType向SQL语句传参有两种方式:#{}和${}

我们经常使用的是#{},一般解说是因为这种方式可以防止SQL注入,简单的说#{}这种方式SQL语句是经过预编译的,它是把#{}中间的参数转义成字符串,举个例子:

select * from student where student_name = #{name} 

预编译后,会动态解析成一个参数标记符?:

select * from student where student_name = ?

而使用${}在动态解析时候,会传入参数字符串

select * from student where student_name = 'lyrics'

总结:

#{} 这种取值是编译好SQL语句再取值
${} 这种是取值以后再去编译SQL语句

  • #{}方式能够很大程度防止sql注入。
  • $方式无法防止Sql注入。
  • $方式一般用于传入数据库对象,例如传入表名.
  • 一般能用#的就别用$.

举个activiti工作流的例子:

select * from${prefix}ACT_HI_PROCINST where PROC_INST_ID_ =#{processInstanceId}

到此这篇关于详解Mybatis中的 ${} 和 #{}区别与用法的文章就介绍到这了,更多相关mybatis ${} 和 #{}区别与用法内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • javacv-ffmpeg ProcessBuilder批量旋转图片方式

    javacv-ffmpeg ProcessBuilder批量旋转图片方式

    为了批量处理大量图片的旋转,可以使用javacv-ffmpeg结合ProcessBuilder,首先在maven配置文件中添加ffmpeg及javacpp依赖,javacpp支持调用C/C++方法,而ffmpeg基于C语言,使用ProcessBuilder创建进程调用ffmpeg方法
    2024-09-09
  • JDK 1.8 安装配置教程(win7 64bit )

    JDK 1.8 安装配置教程(win7 64bit )

    这篇文章主要为大家详细介绍了win7 64bit下JDK 1.8 安装配置教程,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2018-08-08
  • SpringBoot整合Sa-Token实现 API 接口签名安全校验功能

    SpringBoot整合Sa-Token实现 API 接口签名安全校验功能

    这篇文章主要介绍了SpringBoot整合Sa-Token实现 API 接口签名安全校验功能,本文通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2023-07-07
  • Java经典面试题最全汇总208道(二)

    Java经典面试题最全汇总208道(二)

    这篇文章主要介绍了Java经典面试题最全汇总208道(二),本文章内容详细,该模块分为了六个部分,本次为第二部分,需要的朋友可以参考下<BR>
    2023-01-01
  • Springboot项目快速实现拦截器功能

    Springboot项目快速实现拦截器功能

    上一篇文章介绍了Springboot项目如何快速实现过滤器功能,本篇文章接着来盘一盘拦截器,仔细研究后会发现,其实拦截器和过滤器的功能非常类似,可以理解为面向切面编程的一种具体实现。感兴趣的小伙伴可以参考阅读
    2023-03-03
  • 实例详解Java8函数式接口

    实例详解Java8函数式接口

    本文给大家分析了Java8默认方法和函数式接口实例其它创建方式,需要的朋友跟着学习下吧。
    2017-11-11
  • Java手写图书管理基本功能附代码

    Java手写图书管理基本功能附代码

    随着网络技术的高速发展,计算机应用的普及,利用计算机对图书馆的日常工作进行管理势在必行,本篇文章手把手带你用Java实现一个图书管理系统,大家可以在过程中查缺补漏,提升水平
    2022-04-04
  • 多数据源模式JPA整合sharding-jdbc实现数据脱敏

    多数据源模式JPA整合sharding-jdbc实现数据脱敏

    这篇文章主要为大家介绍了JPA项目中多数据源模式整合sharding-jdbc来实现数据脱敏,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步
    2022-02-02
  • java数组排序示例分享

    java数组排序示例分享

    这篇文章主要介绍了java数组排序示例,需要的朋友可以参考下
    2014-03-03
  • Java处理多API请求的方法详解

    Java处理多API请求的方法详解

    Java 中的并发是指语言并行运行多个线程的能力,允许同时执行多个任务,
    2023-10-10

最新评论