`

ibatis中的$和#(转)

 
阅读更多
$ 的作用实际上是字符串拼接,
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注入问题。
------------------------------------------------
1、用$$ 有点宏替换的意思,就是简单的字符串替换,用相应的值替换$$里的内容,如下列映射:
<select id="users" resultMap="user">select * from a $name$</select>,则在传入参数可以queryForList("users", "where name='张三'");  
2、用##则是预编译处理,传入的是什么类型就是什么类型,如下列映射:
<select id="users" resultMap="user">select * from a where a.name=#name#</select>,
你在传入参数时可以queryForList("users", "张三");则生成的sql语句是select * from a where a.name='张三'。
分享到:
评论

相关推荐

    ibatis中 $ 于 # 的 区别

    在ibatis(现称为MyBatis)框架中,$ 和 # 是两种不同的动态SQL元素标记,用于处理参数传递的问题。它们各自有着独特的功能和应用场景,对于理解这两者的差异是十分重要的,因为这会直接影响到查询效率以及SQL注入等...

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

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

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

    在iBatis中编写SQL语句时,可以使用`#{}`和`${}`两种方式来插入参数。这两种方式的主要区别在于安全性和性能: - **#{}**: - 安全性: 使用`#{}`可以有效防止SQL注入攻击,因为它会自动进行SQL转义。 - 性能: 当...

    ibatis sql语句对条件中特殊字符% # 处理

    ### ibatis SQL语句对条件中特殊字符% # 处理 在开发过程中,经常会遇到SQL查询时需要处理字符串中的特殊字符的情况。特别是在使用类似`LIKE`这样的操作符时,如果用户输入的数据中含有`%`、`_`或`#`等特殊字符,...

    ibatis基础知识详解

    总结来说,Ibatis是一个实用的持久层框架,它提供了灵活的SQL操作和高效的映射机制,使得开发者可以更好地管理和控制数据库操作,提高了代码的可读性和可维护性。对于Java开发者来说,掌握Ibatis的基本知识是提升...

    从iBatis迁移到MyBatis

    iBatis是一个Java语言中的SQL映射框架,而MyBatis是在iBatis的基础上发展起来的,提供了更多的功能和优化。 在数据库开发中,持久层框架是至关重要的,它负责处理数据库的CRUD(创建、读取、更新、删除)操作,以及...

    myBatis和ibatis的区别

    - 在ibatis中,`&lt;select&gt;`元素中的`parameterClass`属性用于指定参数类型,在myBatis中改为了`parameterType`。 - 类似地,`resultClass`属性在ibatis中用于指定结果类型,在myBatis中被替换成了`resultType`。 #...

    ibatis官方中文文档

    iBatis是一个优秀的持久层框架,它允许开发者将SQL语句直接写在配置文件中,极大地提高了数据库操作的灵活性和便捷性。以下是对iBatis核心知识点的详细解析: 1. **简介**: iBatis是由Apache软件基金会维护的开源...

    ibatis教程 输入参数详解

    参数可以通过`#{}`语法在SQL语句中引用,ibatis会自动进行类型转换和值绑定。 ### resultMap `resultMap`是ibatis中一个重要的概念,用于描述SQL查询结果与Java对象之间的映射关系。通过`resultMap`可以实现复杂的...

    ibatis2小例子(转)

    标题 "ibatis2小例子(转)" 指向的是一个关于iBatis2的实战教程或示例,这是一套广泛使用的Java持久层框架,它提供了SQL映射功能,使得开发者能够方便地将数据库操作与业务逻辑相结合。在这个小例子中,可能会涉及...

    ibatis2.0中文API

    在iBATIS 2.0中文API中,我们可以深入理解这个框架的核心功能和用法,包括一对多、多对一的关系映射、属性设置以及解决方案的详细解析。 首先,一对多和多对一的关系映射是ORM(对象关系映射)中的关键概念。在...

    ibatis拼接字符串

    在本篇文章中,我们将深入探讨如何使用 Java 编程语言结合 iBatis 框架进行 SQL 字符串的动态拼接。通过分析提供的代码片段,我们可以...在实际开发过程中,合理利用 iBatis 可以极大地提高开发效率和系统的可维护性。

    iBatis和Hibernate的区别

    - 在性能敏感的应用中,iBatis的细粒度控制能力更有优势。 - Hibernate通过减少手工编码量提高了开发效率,但对于某些特定场景下的性能优化可能不如iBatis灵活。 - **学习曲线**: - iBatis的学习曲线相对较平缓...

    ibatis乱码解决方法(ibatis独立)

    本文将详细讨论如何解决Ibatis中的乱码问题,特别是涉及到GBK和ISO_8859_1编码格式时的解决方案。 首先,我们需要了解乱码产生的原因。乱码通常是因为字符编码不一致导致的。在Java和数据库之间进行数据交互时,...

    ibatis api,ibatis文档,ibatis说明文档

    1. 安装和配置:介绍如何将Ibatis集成到项目中,包括Maven或Gradle依赖、Spring整合等。 2. 映射文件和SQL语句:讲解如何编写XML映射文件,包括插入、更新、删除和查询等操作。 3. 动态SQL:Ibatis的动态SQL功能...

    ibatis中文开发指南

    SQLMap是iBATIS中的一个关键组件,它负责解析XML配置文件,其中包含了数据库查询、更新和其他操作的SQL语句以及参数和结果的映射信息。SQLMap能够根据这些信息生成并执行SQL语句,同时处理返回的结果,将其转换成...

    IBATIS_IN_ACTION

    本书详细介绍了iBATIS这一流行开源框架的核心概念、工作原理以及在实际项目中的应用技巧,是iBATIS学习者和使用者不可或缺的参考资料。 ### IBATIS哲学 iBATIS的哲学强调简洁性与灵活性,它旨在提供一个轻量级的...

    ibatis3.0中in的用法

    ### ibatis3.0中`in`的用法详解 #### 一、引言 在进行数据库查询时,经常会遇到需要根据多个值进行查询的情况,这时`IN`语句就显得尤为重要。`IN`语句可以用于判断某个字段的值是否在一个指定的列表之中,非常适用...

    ibatis教程,ibatis帮助文档

    4. 事务:iBATIS支持事务管理,可以在配置文件中定义事务的隔离级别和回滚规则,确保数据的一致性。 总结起来,iBATIS是一个强大且灵活的持久化框架,它的主要优点在于将SQL语句的控制权交给开发者,同时提供了代码...

Global site tag (gtag.js) - Google Analytics