`
weibaojun
  • 浏览: 98842 次
  • 性别: Icon_minigender_1
  • 来自: 火星
社区版块
存档分类
最新评论

ibatis中 $ 于 # 的 区别

阅读更多

转自:http://www.blogjava.net/lsbwahaha/archive/2009/04/16/266026.html

 

    一个项目中在写ibatis中的sql语句时,where user_id in (#user_id_list# ), 运行时总是不行,后来上网查了查,才知道这里不该用#,而应该用$,随即查了下#与$的区别. 
总结如下: 
1.#是把传入的数据当作字符串,如#user_id_list#传入的是1,2,则sql语句生成是这样,in ('1,2') ,当然不可以

2.$传入的数据直接生成在sql里,如#user_id_list#传入的是1,2,则sql语句生成是这样,in(1,2) 这就对了. 

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

4.$方式无法方式sql注入. 

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

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

直观的说 
#str# 出来的效果是  'str' 
$str$ 出来的效果是  str 

另外  ##只能用在特定的几个地方 $$可以用在任何地方  比如 order by $str$ 

你甚至可以直接写  $str$  把 order by 这个字串放在str里传进来 
分享到:
评论

相关推荐

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

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

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

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

    myBatis和ibatis的区别

    - **ibatis起源于Apache项目**:最初作为一个开源项目被发布于Apache基金会。 - **ibatis的退役**:随着时间推移,ibatis项目被归类为“已退役”状态。 - **ibatis迁移到Google Code**:之后,该项目迁移到了Google ...

    ibatis-in-action

    - **缓存机制**:介绍iBATIS中的缓存机制,包括一级缓存和二级缓存的区别及使用方法。 - **调优技巧**:提供一系列性能优化建议,如合理使用缓存、优化SQL语句等。 #### 3.2 数据访问对象 - **DAO模式**:阐述DAO...

    iBatis和Hibernate的区别

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

    J2EE iBatis 概述

    #### 二、iBatis与Hibernate的区别 ##### 2.1 ORM实现方式 - **iBatis**:半自动化的ORM实现。iBatis关注于SQL与Java对象之间的映射,而不是像Hibernate那样自动生成SQL。 - **Hibernate**:全自动化ORM实现。...

    ibatis拼接字符串

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

    iBatis net版中文 1.6的

    - iBatis .NET简介:介绍iBatis .NET的基本概念、设计理念以及与传统数据访问方式的区别。 - 安装与配置:指导如何在.NET项目中引入iBatis .NET,以及如何设置配置文件。 - 数据库映射:讲解如何创建XML映射文件或...

    iBATIS缓存介绍

    ##### 2.3 iBATIS高速缓存和传统O/RM高速缓存的区别 iBATIS高速缓存相较于传统的对象关系映射(ORM)工具的缓存机制,更侧重于简单性和灵活性。例如,iBATIS允许开发者自由地控制缓存的配置,而传统ORM工具可能会有...

    选用ibatis和hibernate的区别

    **选用Ibatis与Hibernate的区别**: 1. **灵活性**:Ibatis允许直接编写SQL,适合复杂的查询和性能优化。Hibernate则倾向于自动化,可能在复杂查询方面不够灵活。 2. **学习曲线**:Hibernate提供了全套的ORM解决...

    ibatis和hibernate的区别

    【ibatis和Hibernate的区别】 在Java开发中,ibatis和Hibernate都是常见的对象关系映射(ORM)框架,它们简化了数据库操作,将Java对象与数据库表之间的映射关系抽象出来,使得开发人员可以使用面向对象的方式处理...

    ibatis2.rar

    iBATIS和Spring的集成是企业级应用开发中常见的组合,因为Spring提供了全面的依赖注入和事务管理,而iBATIS则擅长于SQL映射。集成过程通常包括以下几个步骤: 1. 引入相关库:添加iBATIS和Spring的jar包到项目类路径...

    Hibernate和IBatis对比

    5. **对象模型**:Hibernate支持更复杂的对象模型,如继承关系、多态性等,而iBATIS则更偏向于简单的对象-关系映射。 #### 四、应用场景 - **新项目**:如果你正在启动一个新项目,并且可以完全控制对象模型和...

    ibatis和hibernate的简单介绍

    虽然上述提到的都是两者之间的区别,但在实际的企业应用中,选择ibatis而非Hibernate的原因通常涉及以下几个方面: 1. **特定性能需求**:对于一些高性能的应用场景,企业可能更倾向于使用ibatis,因为它提供了更高...

    ibatis与hibernate的区别

    - **iBatis:** 在iBatis中,虽然也支持对象关系映射,但它更多地依赖于SQL语句和结果集的映射。这种映射方式更加灵活,但在某些情况下可能会增加代码的复杂度。 **3. 性能考虑** - **Hibernate:** Hibernate在...

Global site tag (gtag.js) - Google Analytics