浅谈mybatis中的#和$的区别

 更新时间:2016年06月23日 10:47:23   投稿:jingxian  
下面小编就为大家带来一篇浅谈mybatis中的#和$的区别。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧

1. #将传入的数据都当成一个字符串,会对自动传入的数据加一个双引号。如:order by #user_id#,如果传入的值是111,那么解析成sql时的值为order by "111", 如果传入的值是id,则解析成的sql为order by "id".   

2. $将传入的数据直接显示生成在sql中。如:order by $user_id$,如果传入的值是111,那么解析成sql时的值为order by user_id, 如果传入的值是id,则解析成的sql为order by id.   

3. #方式能够很大程度防止sql注入。  

4.$方式无法防止Sql注入。

5.$方式一般用于传入数据库对象,例如传入表名.   

6.一般能用#的就别用$.

MyBatis排序时使用order by 动态参数时需要注意,用$而不是#

字符串替换

默认情况下,使用#{}格式的语法会导致MyBatis创建预处理语句属性并以它为背景设置安全的值(比如?)。这样做很安全,很迅速也是首选做法,有时你只是想直接在SQL语句中插入一个不改变的字符串。比如,像ORDER BY,你可以这样来使用: ORDER BY ${columnName}

这里MyBatis不会修改或转义字符串。

重要:接受从用户输出的内容并提供给语句中不变的字符串,这样做是不安全的。这会导致潜在的SQL注入攻击,因此你不应该允许用户输入这些字段,或者通常自行转义并检查。

以上就是小编为大家带来的浅谈mybatis中的#和$的区别全部内容了,希望大家多多支持脚本之家~

相关文章

  • JavaWeb实现压缩多个文件并下载实例详解

    JavaWeb实现压缩多个文件并下载实例详解

    本文通过实例代码给大家讲解了javaweb实现压缩多个文件并下载功能,非常不错,具有参考借鉴价值,需要的朋友参考下吧
    2017-07-07
  • spring-boot报错java: 程序包javax.servlet.http不存在

    spring-boot报错java: 程序包javax.servlet.http不存在

    当springboot项目从2.7.x的升级到3.0.x的时候,会遇到一个问题java: 程序包javax.servlet.http不存在,下面就来具体介绍一下,感兴趣的可以了解一下
    2024-08-08
  • Java JDBC高封装Util类的项目实践

    Java JDBC高封装Util类的项目实践

    这篇文章主要介绍了Java JDBC高封装Util类的项目实践,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2023-08-08
  • SpringBoot对接clerk实现用户信息获取功能

    SpringBoot对接clerk实现用户信息获取功能

    Clerk是一个提供身份验证和用户管理的服务,可以帮助开发者快速集成这些功能,下面我们就来看看如何使用Spring Boot对接Clerk实现用户信息的获取吧
    2025-02-02
  • 详解如何配置Spring Batch批处理失败重试机制

    详解如何配置Spring Batch批处理失败重试机制

    这篇文章主要来和大家一起探讨一下如何在Spring批处理框架中配置重试逻辑,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下
    2023-06-06
  • 对Netty组件的基本介绍

    对Netty组件的基本介绍

    这篇文章主要介绍了对Netty组件的基本介绍,Netty是基于Java NIO client-server的网络应用框架,使用Netty可以快速开发网络应用,本文涵盖了netty开发中主要的组件的介绍,需要的朋友可以参考下
    2021-06-06
  • 关于thymeleaf判断对象是否为空的相关逻辑处理

    关于thymeleaf判断对象是否为空的相关逻辑处理

    这篇文章主要介绍了关于thymeleaf判断对象是否为空的相关逻辑处理,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2022-10-10
  • Java实现UTF-8编码与解码方式

    Java实现UTF-8编码与解码方式

    这篇文章主要介绍了Java实现UTF-8编码与解码方式,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2023-04-04
  • Java数据结构与算法之循环队列的实现

    Java数据结构与算法之循环队列的实现

    循环队列 (Circular Queue) 是一种特殊的队列。循环队列解决了队列出队时需要将所有数据前移一位的问题。本文将带大家详细了解循环队列如何实现,需要的朋友可以参考一下
    2021-12-12
  • java内部测试类代码详解

    java内部测试类代码详解

    这篇文章主要介绍了java内部测试类代码详解,具有一定借鉴价值,需要的朋友可以参考下。
    2017-12-12

最新评论