博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
mybatis入门--#{}和${}的区别
阅读量:5260 次
发布时间:2019-06-14

本文共 660 字,大约阅读时间需要 2 分钟。

         我们知道,在mybatis中,sql语句是需要我们自己写的。跟在普通的sql不一样的是,我们在使用mybatis框架的时候,使用的占位符不是

?

而是

#{}

有时候还会出现这个符号

${}

这些符号都代表啥呢?

 

          #{}表示一个占位符号,通过#{}可以实现preparedStatement向占位符中设置值,自动进行java类型和jdbc类型转换,#{}可以有效防止sql注入。 #{}可以接收简单类型值或pojo属性值。 如果parameterType传输单个简单类型值,#{}括号中可以是value或其它名称。

          ${}表示拼接sql串,通过${}可以将parameterType 传入的内容拼接在sql中且不进行jdbc类型转换,使用${}有造成sql注入的风险, ${}可以接收简单类型值或pojo属性值,如果parameterType传输单个简单类型值,${}括号中只能是value。

          通过以上对比,我们可以发现,还是使用占位符#{}比较安全,但是,在有些情况下,我们没有办法使用占位符,只能使用拼接符。如:

 

          这时,我们可以通过js过滤的方法挡住一部分的sql注入,但是还是可以使用工具进行注入,这个问题如何解决目前楼主没有进行研究,欢迎各位大神进行指导。

 

转载于:https://www.cnblogs.com/liyasong/p/mybatis_bj.html

你可能感兴趣的文章
【USACO】 奶牛会展
查看>>
ActiveMQ笔记之点对点队列(Point-to-Point)
查看>>
继承和多态
查看>>
Dijkstra+计算几何 POJ 2502 Subway
查看>>
修复IE不能执行JS的方法
查看>>
程序员究竟该如何提高效率zt
查看>>
希尔排序法(缩小增量法)
查看>>
PHP编程基础学习(一)——数据类型
查看>>
MongoDB-JAVA-Driver 3.2版本常用代码全整理(2) - 查询
查看>>
NPOI处理Word文本中上下角标
查看>>
Android笔记 Handler
查看>>
如何阅读大型前端开源项目的源码(转)
查看>>
java.util.Arrays类详解
查看>>
idea搭建tocmat
查看>>
NYOJ-626-intersection set(二分查找)
查看>>
项目管理之路(1):初步踏入项目管理
查看>>
Java 中 静态方法与非静态方法的区别
查看>>
crypto加密
查看>>
echarts饼图显示百分比
查看>>
JMS消息
查看>>