MyBatis/Ibatis中#和$的区别

摘要:
MyBatis/Ibatis 1中#和$之间的差异。#传入的数据被视为字符串,并在自动传入的数据中添加双引号。解析的sql的值是orderby“111”,解析的sql是orderby”id“。2.$传入数据直接在sql中显示和生成。如果传入的值是111,则解析到sql中的值是orderbyuser_Id,如果传入的是Id。

MyBatis/Ibatis中#和$的区别 
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.一般能用#的就别用$. 

ps:在使用mybatis中还遇到<![CDATA[]]>的用法,在该符号内的语句,将不会被当成字符串来处理,而是直接当成sql语句,比如要执行一个存储过程。

免责声明:文章转载自《MyBatis/Ibatis中#和$的区别》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇charles抓包工具使用指南input chrome下输入之后背景变为黄色的解决办法下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

Java学习之基础语法篇

java 学习之路 0x00 前言 学习java也有段时间了,写篇文章来记录一下学习内容。 0x01 java加载机制 说到java不得不提的是java的类加载机制,java是一个依赖于jvm(也就是java的虚拟机)实现跨平台的一个开发语言,java所有的代码都会在jvm里面运行,java在运行中xx.java的源文件会被编译成class后缀文件(字节码...

织梦cms dedecms程序安装问题

织梦程序的安装及使用 程序安装使用 1.下载程序解压到本地目录; 2.上传程序目录中的/uploads到网站根目录 3.运行http://xxx.xxx.xxx/install/index.php(xxx.xxx.xxx表示你的域名) ,之后按照安装说明进行程序安装 注意事项: 1、安装时候,数据库地址、数据库用户、密码、数据库名这四项是空间商提供的,如果...

Reactive Spring实战 -- WebFlux使用教程

WebFlux是Spring 5提供的响应式Web应用框架。 它是完全非阻塞的,可以在Netty,Undertow和Servlet 3.1+等非阻塞服务器上运行。 本文主要介绍WebFlux的使用。 FluxWeb vs noFluxWeb WebFlux是完全非阻塞的。 在FluxWeb前,我们可以使用DeferredResult和AsyncRestTe...

Linux查看实时网卡流量的几种方式

Linux查看实时网卡流量的几种方式 来源  https://www.jianshu.com/p/b9e942f3682c 在工作中,我们经常需要查看服务器的实时网卡流量。通常,我们会通过这几种方式查看Linux服务器的实时网卡流量。 1. sar -n DEV 1 2 sar命令包含在sysstat工具包中,提供系统的众多统计数据。其在不同的系统上命令...

【Arduino】旋转编码器的Arduino使用方法

以前用CRT显示器的时候,调整显示器的时候用一个圆盘转动和点击的方法就可以实现选择菜单和修改设置项的值,比多个按钮的方式方便很多。 鼠标滚轮也是这种操作方法,旋转+点击,只是方向不同。最近在网上买了旋转编码器模块,想把它用到实际制作中。在网上找了很多资料,测试发现其中的代码或多或少都有问题。于是决定自己研究一下旋转编码器的原理,只涉及高低电平应该会比较简...

蓝牙协议栈详解

1.概述: 蓝牙协议规范遵循开放系统互连参考模型(OSI/RM),从低到高地定义了蓝牙协议堆栈的各个层次。 SIG所定义的蓝牙技术规范的目的是使符合该规范的各种应用之间能够实现互操作。互操作的远端设备需要使用相同的协议栈,不同的应用需要不同的协议栈。但是,所有的应用都要使用蓝牙技术规范中的数据链路层和物理层。 2.完整的蓝牙协议栈 完整的蓝牙协议栈如图1所...