`

Ibatis中#和$的区别

阅读更多
在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$'


$ 的作用实际上是字符串拼接,
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简介与特点 iBatis作为一款轻量级的Java持久层框架,以其简洁、灵活的特点,在众多框架中占据一席之地。相较于知名的Hibernate框架,iBatis在实现上...

    ibatis中 $ 于 # 的 区别

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

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

    在iBATIS中,有两种主要的方式来处理这些参数:使用`$`和`#`。这两种方式在不同的场景下有不同的效果。 首先,让我们来看看如何通过HashMap传递SQL参数。当SQL Map接口只能接受一个参数,但我们需要传递多个参数时...

    iBatis和Hibernate的区别

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

    myBatis和ibatis的区别

    通过对ibatis与myBatis之间区别的详细分析,我们可以看到myBatis不仅继承了ibatis的优点,还在很多方面进行了改进和优化,使得其在功能性和易用性上都有了显著提升。对于开发者而言,选择myBatis作为持久层框架可以...

    选用ibatis和hibernate的区别

    在选择Java持久化框架时,Ibatis和Hibernate是两个常用的选择。它们各有特点,适用场景也有所不同。以下是对两者的基本功能、使用步骤以及差异的详细分析: **Hibernate** 是一个全面的对象关系映射(ORM)框架,它...

    ibatis拼接字符串

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

    ibatis和hibernate的区别

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

    iBatis net版中文 1.6的

    -事务管理:讨论如何在iBatis .NET中处理事务,包括手动和自动事务控制。 - 故障排查:提供常见问题的解决方案和最佳实践。 通过阅读这份文档,开发者可以了解到iBatis .NET的完整功能,学会如何在.NET项目中有效...

    Ibatis视频下载

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

    ibatis和mybatis的区别

    在里面总结了ibatis和mybatis的主要区别,包括xml文件等

    J2EE iBatis 概述

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

    ibatis和hibernate的简单介绍

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

    ibatis-in-action

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

    ibatis2.rar

    iBATIS是一个优秀的Java持久层框架,它提供了一个SQL映射框架,使开发者能够将SQL语句直接写在配置文件中,与Java代码分离,从而实现了数据访问逻辑和业务逻辑的解耦。"ibatis2.rar"这个压缩包文件包含了关于iBATIS ...

    最好的ibatis教程实例(内有注释)

    4. **参数映射与结果集映射**:Ibatis提供了强大的参数映射机制,如#{}和${}的区别,以及如何使用Map、POJO、自定义VO等方式传递参数。同时,它还支持自动映射结果集,也可以自定义映射规则。 5. **缓存机制**:...

    关于Ibatis的jar包

    在提供的压缩包中,有两个关键文件:`最简单的iBatis入门例子.chm`和`Ibatis包`。让我们一一解析它们: 1. **最简单的iBatis入门例子.chm**: 这是一个帮助文件,通常包含一系列关于如何快速入门Ibatis的教程和...

    iBATIS实战

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

Global site tag (gtag.js) - Google Analytics