`
MauerSu
  • 浏览: 514824 次
  • 性别: Icon_minigender_1
  • 来自: 北京
文章分类
社区版块
存档分类
最新评论

ibatis中 $ 于 # 的 区别?

 
阅读更多
源:http://www.blogjava.net/lsbwahaha/archive/2009/04/16/266026.html
评:
ibatis中 $ 于 # 的 区别?
     一个项目中在写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里传进来
今天花了N久,才把这个问题搞出来,郁闷下,不过出来了也挺开心的,终于搞定啦,嘿嘿~!~  
分享到:
评论

相关推荐

    ibatis中 $ 于 # 的 区别

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

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

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

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

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

    ibatis和hibernate的区别

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

    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应用程序与数据库之间的交互。尽管它们有着相似的目标,...

    ibatis拼接字符串

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

    J2EE iBatis 概述

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

    iBatis net版中文 1.6的

    iBatis 是一款著名的开源持久层框架,专为Java应用程序设计,它允许开发者将SQL语句直接嵌入到Java代码中,从而简化了数据访问层的开发。在.NET环境中,iBatis同样提供了相应的实现,即iBatis .NET版。这个版本与...

    选用ibatis和hibernate的区别

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

    iBATIS缓存介绍

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

    ibatis2.rar

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

    ibatis和hibernate的简单介绍

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

    Hibernate和IBatis对比

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

    ibatis与hibernate的区别

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

Global site tag (gtag.js) - Google Analytics