专栏首页带你回家mybatis中的#号与$符号的区别

mybatis中的#号与$符号的区别

#{变量名}可以进行预编译、类型匹配等操作,#{变量名}会转化为jdbc的类型。 select * from tablename where id = #{id} 假设id的值为12,其中如果数据库字段id为字符型,那么#{id}表示的就是'12',如果id为整型,那么id就是12,并且MyBatis会将上面SQL语句转化为jdbc的select * from tablename where id=?,把?参数设置为id的值。 ${变量名}不进行数据类型匹配,直接替换。 select * from tablename where id = ${id} 如果字段id为整型,sql语句就不会出错,但是如果字段id为字符型, 那么sql语句应该写成select * from table where id = '${id}'。 #方式能够很大程度防止sql注入。 $方式无法方式sql注入。 $方式一般用于传入数据库对象,例如传入表名。 尽量多用#方式,少用$方式。

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • mySql问题

    SELECT DATA_LIST.* ,CAST((@rowNum:=@rowNum+1) AS CHAR) AS ROWNO FROM (

    斯文的程序
  • SpringBoot与SpringCloud的版本对应

    学习框架之前必须要了解版本,这是你学习的前提,如果不了解版本,后面出了莫名其妙的错误你会抓狂。

    斯文的程序
  • Oracle 递归sql,mybatis的递归查询,与存储过程调用

    引用文献:https://www.cnblogs.com/Soprano/p/10659127.html

    斯文的程序
  • Bypass 360主机卫士SQL注入防御(多姿势)

    在服务器客户端领域,曾经出现过一款 360 主机卫士,目前已停止更新和维护,官网都打不开了,但服务器中依然经常可以看到它的身影。

    信安之路
  • Bypass 360主机卫士SQL注入防御(多姿势)

    在服务器客户端领域,曾经出现过一款360主机卫士,目前已停止更新和维护,官网都打不开了,但服务器中依然经常可以看到它的身影。从半年前的测试虚拟机里面,翻出了36...

    Bypass
  • 面试题|无索引如何删除亿级数据?

    存在索引的情况下就比较简单,直接利用索引进行删除,写一个for 循环语句 每次删除500行,每次判断delete 影响的行数可以累加计算删除了多少行,直到删除结...

    用户1278550
  • 面试题|无索引如何删除亿级数据?

    存在索引的情况下就比较简单,直接利用索引进行删除,写一个for 循环语句 每次删除500行,每次判断delete 影响的行数可以累加计算删除了多少行,直到删除结...

    [3306 Pai ] 社区
  • 死锁案例之二

    一 前言 死锁,其实是一个很有意思也很有挑战的技术问题,大概每个DBA都会在工作过程中遇见。关于死锁我会持续写一个系列的案例分析,希望能够对想了解死锁的朋友有...

    用户1278550
  • SQL优化之踩过的坑

    正看资料看的过瘾,突然收到报警,说服务器负载太高,好吧,登录服务器看看,我擦嘞,还能不能愉快的玩耍了?下面是当时的负载情况 ? 看见mysql使用cpu已经到了...

    小小科
  • 约束

    一 介绍 约束条件与数据类型的宽度一样,都是可选参数 作用:用于保证数据的完整性和一致性 主要分为: PRIMARY KEY (PK) 标识该字段为该表的...

    用户1214487

扫码关注云+社区

领取腾讯云代金券