1、#和$两者含义不同
#:会进行预编译,而且进行类型匹配;
$:不进行数据类型匹配。
示例:变量name的类型是string, 值是"张三"
    $name$ = 张三
    #name# ='张三'
因此使用$就会报错,若要使用$的话,需要修改为’$name$’;

2、两者的实现方式不同
2.1)$ 作用相等于是字符串拼接,
select * from users where name= $name$
等效于
StringBuffer sb = newStringBuffer(256);
sb.append("select * from users where name=").append(name);
sb.toString();

2.2)# 作用相当于变量替换
select * from users  where name = #name#
等效于
prepareStement=stmt.createPrepareStement("select * from users where name = ?")
prepareStement.setString(1,'张三');//自动进行java类型和jdbc类型转换

3、#和$使用场景不同
3.1)变量的传递,必须使用#。可以防止sql注入,#是用prepareStement,提示效率
#方式一般用于传入添加/修改的值或查询/删除的where条件
3.2)$只是简单的字符拼接而已,对于非变量部分,那只能使用$,实际上,在很多场合,$也是有很多实际意义的
$方式一般用于传入数据库对象(如传入表名)
例如:
select  * from  $tableName$  对于不同的表执行统一的查询
update  $tableName$ set  name = #name#  每个实体一张表,改变不用实体的状态
特别说明,$只是字符串拼接,所以要特别小心sql注入问题。
3.3)能同时使用#和$的时候,最好用#

五、ibatis中#和$的区别和使用的更多相关文章

  1. ibatis 中 $与#的区别

    ibatis 中 $与#的区别 使用#: select * from table where id = #id# 如果字段为整型:#id#表示成id select * from table where ...

  2. ibatis中 $ 于 # 的 区别?

    转自: http://www.blogjava.net/lsbwahaha/archive/2009/04/16/266026.html 一个项目中在写ibatis中的sql语句时,where use ...

  3. MyBatis/Ibatis中#和$的区别

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

  4. JavaScript学习总结(五)——Javascript中==和===的区别

    一.JavaScript"=="的作用 当==两边的内容是字符串时,则比较字符串的内容是否相等. 当==两边的内容是数字时,则比较数字的大小是否相等. 当==两边的内容是对象或者是 ...

  5. ibatis中$和#的区别

    比如当变量name的类型是Stirng时, $name$ 打印出来的是 张三 #name# 打印出来的是 ‘张三’ $ 的作用实际上是字符串拼接 #用于变量替换 那什么时候用$,什么时候 用 # (1 ...

  6. mybatis 中#{}与${}的区别 (面试题)

    MyBatis/Ibatis中#和$的区别 1. #将传入的数据都当成一个字符串,会对自动传入的数据加一个双引号. 如:order by #user_id#,如果传入的值是111,那么解析成sql时的 ...

  7. ibatis中的$和#的区别

    介绍 在Ibatis中我们使用SqlMap进行Sql查询时需要引用参数,在参数引用中遇到的符号#和$之间的区分为,#可以进行与编译,进行类型匹配,而$不进行数据类型匹配,例如: select * fr ...

  8. ibatis 中isNull, isNotNull与isEmpty, isNotEmpty区别

    在iBATIS中isNull用于判断参数是否为Null,isNotNull相反 isEmpty判断参数是否为Null或者空,满足其中一个条件则其true isNotEmpty相反,当参数既不为Null ...

  9. ibatis 中#和 $ 符号的区别

    1.数据类型匹配 #:会进行预编译,而且进行类型匹配(自动确定数据类型): $:不进行数据类型匹配. 2.实现方式: # 用于变量替换(先生成一个占位符,然后替换) select * from use ...

随机推荐

  1. UIResponder的API

    @property(nonatomic, readonly) UIResponder *nextResponder; 返回响应者链中的下一个响应者,或者nil如果没有下一个响应者. @property ...

  2. Spring Boot Ftp Client 客户端示例支持断点续传

    本章介绍 Spring Boot 整合 Ftpclient 的示例,支持断点续传 本项目源码下载 1 新建 Spring Boot Maven 示例工程项目 注意:是用来 IDEA 开发工具 File ...

  3. string和stringBuffer,stringBuilder的区别

    1,String类的内容一旦声明后是不可改变的,改变的只是其内存的指向,而StringBuffer类的对象内容是可以改变的. 2,对于StringBuffer,不能像String那样直接通过赋值的方式 ...

  4. 小程序云函数调用http或https请求外部数据

    参考网址 https://blog.csdn.net/qiushi_1990/article/details/101220920 小程序云函数调用http或https请求外部数据 原创编程小石头 发布 ...

  5. Git 工作区、暂存区和版本库、操作流程

    Git 工作区.暂存区和版本库 基本概念 我们先来理解下Git 工作区.暂存区和版本库概念 工作区:就是你在电脑里能看到的目录. 暂存区:英文叫stage, 或index.一般存放在 ".g ...

  6. java面试(二)

    1.java常见的容器 几乎所有的容器都继承了Collecton接口,包括List.Set.Queue.Map List包括Vector.ArrayList.LinkedList,      Set包 ...

  7. C++11常用特性介绍——array容器

    std::array是具有固定大小的数组,支持快速随机访问,不能添加或删除元素,定义于头文件<array>中. 一.概要 array是C++11新引入的容器类型,与内置数组相比,array ...

  8. P4710 平抛运动

    题目:https://www.luogu.org/problemnew/show/P4710 $$ v_x = v_{x_0} = v \ sin \ \theta, \  v_y = v_{y_0} ...

  9. 爬虫(十四):Scrapy框架(一) 初识Scrapy、第一个案例

    1. Scrapy框架 Scrapy功能非常强大,爬取效率高,相关扩展组件多,可配置和可扩展程度非常高,它几乎可以应对所有反爬网站,是目前Python中使用最广泛的爬虫框架. 1.1 Scrapy介绍 ...

  10. WKWebView单个界面添加请求头

    https://www.jianshu.com/p/14b9ea4bf1d4 https://github.com/Yeatse/NSURLProtocol-WebKitSupport/blob/ma ...