转自: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(现已被MyBatis取代)进行数据库操作时,我们常常需要传递参数到SQL语句中。在iBATIS中,有两种主要的方式来处理这些参数:使用`$`和`#`。这两种方式在不同的场景下有不同的效果。 首先,让我们来看看...
### ibatis中输入输出各种类型的参数分析及#与$区别 #### iBatis简介与特点 iBatis作为一款轻量级的Java持久层框架,以其简洁、灵活的特点,在众多框架中占据一席之地。相较于知名的Hibernate框架,iBatis在实现上...
- **ibatis起源于Apache项目**:最初作为一个开源项目被发布于Apache基金会。 - **ibatis的退役**:随着时间推移,ibatis项目被归类为“已退役”状态。 - **ibatis迁移到Google Code**:之后,该项目迁移到了Google ...
- **缓存机制**:介绍iBATIS中的缓存机制,包括一级缓存和二级缓存的区别及使用方法。 - **调优技巧**:提供一系列性能优化建议,如合理使用缓存、优化SQL语句等。 #### 3.2 数据访问对象 - **DAO模式**:阐述DAO...
### iBatis与Hibernate的主要区别 #### 一、概述 iBatis与Hibernate都是Java领域内流行的ORM(Object-Relational Mapping,对象关系映射)框架,用于简化Java应用程序与数据库之间的交互。尽管它们有着相似的目标,...
#### 二、iBatis与Hibernate的区别 ##### 2.1 ORM实现方式 - **iBatis**:半自动化的ORM实现。iBatis关注于SQL与Java对象之间的映射,而不是像Hibernate那样自动生成SQL。 - **Hibernate**:全自动化ORM实现。...
虽然 iBatis 在某些方面与 Hibernate 类似,但它们之间的主要区别在于 iBatis 提供了更细粒度的 SQL 控制能力,这使得 iBatis 在复杂查询或性能敏感的应用场景中更具优势。 ### 二、动态 SQL 的概念 在实际应用中...
- iBatis .NET简介:介绍iBatis .NET的基本概念、设计理念以及与传统数据访问方式的区别。 - 安装与配置:指导如何在.NET项目中引入iBatis .NET,以及如何设置配置文件。 - 数据库映射:讲解如何创建XML映射文件或...
##### 2.3 iBATIS高速缓存和传统O/RM高速缓存的区别 iBATIS高速缓存相较于传统的对象关系映射(ORM)工具的缓存机制,更侧重于简单性和灵活性。例如,iBATIS允许开发者自由地控制缓存的配置,而传统ORM工具可能会有...
**选用Ibatis与Hibernate的区别**: 1. **灵活性**:Ibatis允许直接编写SQL,适合复杂的查询和性能优化。Hibernate则倾向于自动化,可能在复杂查询方面不够灵活。 2. **学习曲线**:Hibernate提供了全套的ORM解决...
【ibatis和Hibernate的区别】 在Java开发中,ibatis和Hibernate都是常见的对象关系映射(ORM)框架,它们简化了数据库操作,将Java对象与数据库表之间的映射关系抽象出来,使得开发人员可以使用面向对象的方式处理...
iBATIS和Spring的集成是企业级应用开发中常见的组合,因为Spring提供了全面的依赖注入和事务管理,而iBATIS则擅长于SQL映射。集成过程通常包括以下几个步骤: 1. 引入相关库:添加iBATIS和Spring的jar包到项目类路径...
5. **对象模型**:Hibernate支持更复杂的对象模型,如继承关系、多态性等,而iBATIS则更偏向于简单的对象-关系映射。 #### 四、应用场景 - **新项目**:如果你正在启动一个新项目,并且可以完全控制对象模型和...
虽然上述提到的都是两者之间的区别,但在实际的企业应用中,选择ibatis而非Hibernate的原因通常涉及以下几个方面: 1. **特定性能需求**:对于一些高性能的应用场景,企业可能更倾向于使用ibatis,因为它提供了更高...
- **iBatis:** 在iBatis中,虽然也支持对象关系映射,但它更多地依赖于SQL语句和结果集的映射。这种映射方式更加灵活,但在某些情况下可能会增加代码的复杂度。 **3. 性能考虑** - **Hibernate:** Hibernate在...