`

ibatis 中 $与#的区别(转)

    博客分类:
  • SSIH
 
阅读更多
在sql配置中比如in(#rewr#) 与in ($rewr$)

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

select * from table where id = #id# ,其中如果字段id为字符型,那么#id#表示的就是'id'类型,如果id为整型,那么#id#就是id类型。

select * from table where id = $id$ ,如果字段id为整型,Sql语句就不会出错,但是如果字段id为字符型,那么Sql语句应该写成 select * from table where id = '$id$'
如若不然,就要这样写 Like
like '%'||#word#||'%'


$ 的作用实际上是字符串拼接,
select * from $tableName$
等效于
StringBuffer sb = new StringBuffer(256);
sb.append("select * from ").append(tableName);
sb.toString();

#用于变量替换
select * from table where id = #id#
等效于
prepareStement = stmt.createPrepareStement("select * from table where id = ?")
prepareStement.setString(1,'abc');

------------------------------------------------

说道这里, 总结一下, 什么时候用$,什么时候 用 #

对于变量部分, 应当使用#, 这样可以有效的防止sql注入, 未来,# 都是用到了prepareStement,这样对效率也有一定的提升

$只是简单的字符拼接而已,对于非变量部分, 那只能使用$, 实际上, 在很多场合,$也是有很多实际意义的
例如
select * from $tableName$ 对于不同的表执行统一的查询
update $tableName$ set status = #status# 每个实体一张表,改变不用实体的状态
特别提醒一下, $只是字符串拼接, 所以要特别小心sql注入问题。
分享到:
评论
发表评论

文章已被作者锁定,不允许评论。

相关推荐

    ibatis中 $ 于 # 的 区别

    ### ibatis中 $ 与 # 的区别 在ibatis(现称为MyBatis)框架中,$ 和 # 是两种不同的动态SQL元素标记,用于处理参数传递的问题。它们各自有着独特的功能和应用场景,对于理解这两者的差异是十分重要的,因为这会...

    Ibatis资料ibatai sql map iBATIS使用$和#的一些理解

    在使用iBATIS(现已被MyBatis取代)进行数据库操作时,我们常常需要传递参数到SQL语句中。在iBATIS中,有两种主要的方式来处理这些参数:使用`$`和`#`。这两种方式在不同的场景下有不同的效果。 首先,让我们来看看...

    ibatis中输入输出各种类型的参数分析及#与$区别

    ### ibatis中输入输出各种类型的参数分析及#与$区别 #### iBatis简介与特点 iBatis作为一款轻量级的Java持久层框架,以其简洁、灵活的特点,在众多框架中占据一席之地。相较于知名的Hibernate框架,iBatis在实现上...

    myBatis和ibatis的区别

    ### myBatis与ibatis的区别 #### 一、概述 myBatis与ibatis是两款在Java领域中非常流行的持久层框架,它们均基于SQL映射机制,为开发者提供了便捷的方式来处理数据库操作。两者间的关系密切,ibatis是myBatis的...

    iBatis和Hibernate的区别

    ### iBatis与Hibernate的主要区别 #### 一、概述 iBatis与Hibernate都是Java领域内流行的ORM(Object-Relational Mapping,对象关系映射)框架,用于简化Java应用程序与数据库之间的交互。尽管它们有着相似的目标,...

    ibatis拼接字符串

    虽然 iBatis 在某些方面与 Hibernate 类似,但它们之间的主要区别在于 iBatis 提供了更细粒度的 SQL 控制能力,这使得 iBatis 在复杂查询或性能敏感的应用场景中更具优势。 ### 二、动态 SQL 的概念 在实际应用中...

    ibatis与hibernate的区别

    ### ibatis与hibernate的区别 #### 一、概述 在Java开发领域中,持久化技术是连接应用程序与数据库之间的重要桥梁。其中,ibatis(现称为MyBatis)和Hibernate作为两种主流的对象关系映射(Object Relational ...

    ibatis 开发指南

    #### 二、ibatis与全自动化ORM工具的区别 ibatis之所以被称为“半自动化”的ORM实现,主要是因为它并不像Hibernate或Apache OJB那样提供对数据库结构的完全封装。使用ibatis时,开发者需要自己编写SQL语句,并通过...

    iBATIS实战

    5. **参数映射与结果映射**:学习如何将Java对象的属性与SQL语句中的占位符进行映射,以及如何将查询结果自动转换为Java对象,理解#{}和${}的区别。 6. **事务管理**:了解iBATIS如何处理事务,包括手动控制和自动...

    ibatis开发指南

    - 在ibatis中,通过XML映射文件定义SQL语句以及SQL结果与Java对象之间的映射规则。 - **ibatis中的对象关系映射机制**: - 通过在XML映射文件中定义SQL语句,ibatis能够将查询结果自动映射到Java对象上。 - 支持...

    axis1.4+ibatis2.3开发webservice服务[图解]

    ### 使用Axis 1.4与iBatis 2.3开发WebService服务 #### 背景及选择原因 本文档旨在介绍如何使用Axis 1.4结合iBatis 2.3来构建一个稳定的WebService服务。尽管Axis 2提供了一些改进和新特性,但在实际项目部署过程...

    ibatis2.3 jar包

    Ibatis 2.3与其他版本的区别** 虽然Ibatis后续版本(如3.x)引入了许多新特性,如注解支持、更强大的XML配置、更多类型的参数映射等,但2.3版本依然在很多项目中被使用,因为它简洁、稳定,对于小型项目或对性能...

    ibatis优缺点

    本文将基于提供的文件信息,深入探讨ibatis与Hibernate之间的区别,特别是ibatis相较于Hibernate的优缺点。 #### 二、ibatis的优点 1. **灵活性高**:ibatis允许开发者直接编写SQL语句,并提供丰富的SQL映射配置...

    IBATIS最新最全开发指南

    **八、IBATIS与MyBatis的区别** MyBatis是IBATIS的升级版,增加了注解支持,使得SQL与Java代码的绑定更加灵活,同时社区活跃度更高,更新更频繁。 总结来说,IBATIS是一个强大的数据访问框架,它通过XML配置和Java...

    abc.rar_ABC_ibatis

    本压缩包文件“abc.rar_ABC_ibatis”包含了对这两者进行深入比较的经典文档“ibatis与hibernate的区别.doc”。现在,我们将详细探讨iBatis和Hibernate的主要差异,以及它们各自的特点。 首先,iBatis,由MyBatis的...

    Ibatis和Hibernate的分析比较

    在IT领域,数据库持久化是应用开发中的重要环节,Ibatis和Hibernate是两种常见的ORM(对象关系映射)框架,它们都有各自的特点和优势。本文将深入探讨这两者之间的分析比较。 首先,Hibernate是一个全面的对象关系...

    ibatis迁移到mybatis3共6页.pdf.zip

    【压缩包子文件的文件名称列表】:这里列出的“赚钱项目”与主题“ibatis迁移到mybatis3”似乎不直接相关,可能是压缩包中的文件列表显示错误或者包含额外的无关文件。因此,我们主要关注的是与迁移过程相关的知识点...

    Flex教程(整合Flex+BlazeDS+Spring+iBatis+Cairngorm+pureMVC).doc

    ### Flex教程核心知识点详解 ...在后续章节中,本教程将详细介绍如何将Flex与Java技术整合,特别是如何使用BlazeDS、Spring、iBatis、Cairngorm 和 pureMVC 这些框架来进行集成开发,从而实现高效、稳定的RIA应用开发。

    自整理Java关于基础和框架的面试题

    ##### JSP9大隐视对象中四个作用域的大小与作用范围 - **pageContext**:最小的作用范围,仅限于当前页面。 - **request**:当前HTTP请求的范围内有效。 - **session**:用户会话的范围内有效。 - **application**:...

Global site tag (gtag.js) - Google Analytics