`

ibatis # $区别

阅读更多

1、#可以进行预编译,进行类型匹配,#变量名#  会转化为 jdbc 的 ?
   $不进行数据类型匹配,$变量名$就直接把 $name$替换为 name的内容

   例如:
     select * from tablename where id = #id# ,其中如果字段id为字符型,那么#id#表示的就是'id'类型,如果id为整型,那么#id#就是id类型
     会转化为jdbc的 select * from tablename where id=?,把?参数设置为id的值

     select * from tablename where id = $id$ ,如果字段id为整型,Sql语句就不会出错,但是如果字段id为字符型,
     那么Sql语句应该写成 select * from table where id = '$id$'
     如果id为 "' ' or 1 = 1", 那么这样就有可能导致sql注入,所以ibatis用#比$好,不会造成sql注入

2、ibatis中的参数传入的值参数比较多,最好用bean方式传入,
   也就是通过set/get取值的方式给sql map注入参数,不要用hashmap结构传入,
   每次用hashmap传入会占用比较多的内容。如果参数少,用hashmap也比较方便简单。
   但是对传入参数的判断,用bean方式比较容易检测发现,配置也能够统一配置。

3、#方式能够很大程度防止sql注入.
4、$方式无法方式sql注入.
5、$方式一般用于传入数据库对象.例如传入表名.
6、一般能用#的就别用$.

 

在做in,like 操作时候要特别注意

mysql: select * from user where user_name like concat('%',#name#,'%')
oracle: select * from user where user_name like '%'||#name#||'%'
sql server:select * from user where user_name like '%'+#name#+'%'

  

分享到:
评论

相关推荐

    ibatis中 $ 于 # 的 区别

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

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

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

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

    接下来,我们讨论一下`$`和`#`的区别。通常情况下,`#`被用来防止SQL注入,它会将变量转化为预编译语句中的占位符。例如: ```sql select * from member where id = #id# ``` 当在Java代码中设置`id`为某个值时,...

    iBatis和Hibernate的区别

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

    myBatis和ibatis的区别

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

    选用ibatis和hibernate的区别

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

    ibatis拼接字符串

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

    J2EE iBatis 概述

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

    ibatis和hibernate的区别

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

    ibatis-2.3.4.726.jar,ibatis-2.3.0.677.jar,ibatis-2.3.3.720.jar下载

    接下来,我们关注这些版本的区别: - **ibatis-2.3.4.726.jar**:这是iBATIS 2.x系列的较新版本,可能包含了一些bug修复、性能优化和新的特性。例如,可能会对之前版本的不稳定性问题进行了改进,或者添加了对某些...

    ibatis2.rar

    5. 执行器Executor:简单执行器和复用执行器的区别,以及它们在不同场景下的选择。 6. 缓存机制:理解iBATIS的一级缓存和二级缓存,提高数据访问效率。 此外,压缩包中的"ibatis-2.3.0.677.jar"是iBATIS的核心库,...

    ibatis-in-action

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

    Ibatis视频下载

    Ibatis的#{}和${}的区别,以及使用注解进行映射的方法也会在此部分讲解。 5. **事务管理**:学习如何在Ibatis中配置和管理事务,包括手动和自动提交,以及事务的隔离级别。 6. **高级特性**:视频可能还会涵盖一些...

    ibatis和hibernate的简单介绍

    #### 三、ibatis与Hibernate的区别 1. **设计理念**: - **ibatis**:强调对SQL语句的控制,更适合对性能有较高要求的应用。 - **Hibernate**:更注重对象模型的映射,适合于需要快速开发的应用。 2. **学习曲线...

    iBatis2.0文档

    #### 九、iBatis与Hibernate/OJB的区别 - **ORM 封装程度**:iBatis 提供了更灵活的 SQL 语句编写方式,而 Hibernate/OJB 则更加自动化。 - **适用场景**:iBatis 更适合需要高度定制 SQL 语句的复杂查询场景;...

    关于Ibatis的jar包

    - **参数映射和结果映射**:讲解如何处理输入参数和输出结果,包括使用#{property}和${property}的区别,以及自动映射和自定义映射。 - **Executor执行器**:简述不同类型的Executor(SimpleExecutor、...

    ibatis与hibernate的区别

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

Global site tag (gtag.js) - Google Analytics