`

Ibatis中的#与$

 
阅读更多
SQL代码
1.select * from tbuser where id in (#ids#) 

参数使用的是string类型,值是“1,2,3,4”,然而一直查不到数据。想了N久,也不懂得如何解决。后来在baidu了一下,找到了一些相关资料,终于可以解决了。以下是一点资料整理。

由于使用"#id#"来传值,形成的SQL就是


SQL代码
1.select * from tbuser where id in ("1,2,3,4")  

所以也就不能查询成功。正确的方式应该是使用"$"来传值,其SQL如下


SQL代码
1.select * from tbuser where id in ($ids$) 

$和#的区别在于, $方式传进的参数值是直接生成到SQL文里面的

而#是作为PrepareStatement的(?)参数传进SQL里面的 

形式上看,$比#方式要灵活。不过,这两种方式是为了应对不同的问题的。

当用#方式传入画面上直接输入的值时能够很大程度上防止SQL注入攻击。

而用$方式传直接输入参数的时候,是无法防止SQL注入攻击的。

$方式主要是用来把数据库对象名当作参数传入。

这是#方式做不到的这种做法不太常见,一般只有在写共同逻辑的时候用


ibatis中的#和$有什么区别。
#:#name#,是指一个属性叫name,把name的值传进来。会在name的值的两侧加上引号。如:where name = #name#,name传进来的值是 李花花 ,那么上面的语句就会解读为where name = '李花花'。

$:$name$,是指一个属性叫name,就是把name的值原样放到sql语句中。两边不加引号。个人理解,这种写法,很少传什么名字之类的。基本上都是传字段的名称。如:order by $name$,name传进来的值是 id ,那么上面的语句就会解读为order by id。
分享到:
评论

相关推荐

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

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

    ibatis中 $ 于 # 的 区别

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

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

    其中,单引号(`'`)被替换为两个单引号(`''`),这是为了防止字符串中的单引号与SQL语句中的单引号发生冲突。而斜杠(`/`)、百分号(`%`)以及下划线(`_`)都被加上了转义字符斜杠(`/`)。 ##### 2.2 使用动态SQL标签 ...

    操作数据库 iBATIS查询

    #### 一、iBATIS中的LIKE查询技巧 iBATIS是一款优秀的Java持久层框架,它简化了基于SQL的程序编写,避免了程序员手动处理结果集和手工编写SQL语句。在进行数据库查询时,LIKE查询是一种常见的需求,特别是在搜索...

    ibatis总结 ibatis ibatis ibatis ibatis

    Ibatis 是一款轻量级的Java持久层框架,它允许开发者将SQL语句与Java代码分离,从而使得数据库访问更加灵活、易于维护。本篇文章将深入探讨Ibatis的核心概念、最佳实践以及与其他框架如Struts和Spring的整合。 1. ...

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

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

    ibatis官方中文文档

    **标题与描述解析** 本文档集是"Ibatis官方中文文档",包含两份重要的资源:《iBATIS-SqlMaps-2_cn.pdf》和《iBATIS-SqlMaps-2-Tutorial_cn.pdf》。这两份文档详尽地介绍了iBATIS这一持久层框架的使用方法,特别是...

    Ibatis中文版教程

    iBatis中文版教程:深入理解与应用 iBatis是一个开源的数据持久层框架,它在Java开发领域中占有重要地位,尤其对于那些倾向于手动编写SQL语句而非使用ORM(对象关系映射)自动生成SQL的开发者来说。iBatis与...

    ibatis中iterate的例子

    在Java Web开发中,iBatis(现在称为MyBatis)是一个流行的持久层框架,它提供了灵活的SQL映射机制,使得数据库操作更加便捷。在iBatis中,`<iterate>`标签是一个非常实用的功能,它允许我们处理集合数据,如数组、...

    Spring+ibatis 保留ibatis事务的配置

    根据提供的文件信息,本文将详细解析如何在Spring与ibatis框架整合时,通过特定配置来保留ibatis事务处理机制,并实现对事务的自定义控制。文章将围绕标题、描述及部分代码片段展开讨论。 ### Spring与ibatis整合...

    ibatis开发过程取值问题

    在IT行业中,Ibatis是一个非常流行的Java持久层框架,它为开发者提供了灵活的SQL映射功能,使得数据库操作与业务逻辑解耦合。本篇文章将深入探讨Ibatis在开发过程中遇到的取值问题,以及“##”符号在其中的作用。 ...

    ibatis拼接字符串

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

    iBatis文档\ibatis.doc

    iBatis 是一款轻量级的Java持久层框架,它主要负责将数据库操作与业务逻辑解耦,使得开发者可以更加专注于SQL和业务代码的编写。本文档将详细讲解iBatis的核心概念、快速入门以及高级特性。 ### iBatis 快速启动 #...

    ibatis应对批量update

    通过上述步骤,我们可以在ibatis中实现高效的批量更新操作,极大地提升系统处理大规模数据的能力。这种方法不仅适用于Java环境下的开发,也适用于其他支持ibatis的编程语言。总之,ibatis提供的批量更新功能是处理...

    iBatis net版中文 1.6的

    在标签中,"iBatis"是关键词,强调了这个话题与iBatis框架密切相关。iBatis的主要特点包括: 1. SQL映射:通过XML或注解定义SQL语句,使得SQL与Java代码分离,易于维护。 2. 动态SQL:支持在SQL语句中进行条件判断...

    Ibatis3手册 Ibatis3参考手册

    本篇文章基于“Ibatis3手册 Ibatis3参考手册”的标题及描述,深入解析Ibatis3的核心概念、架构特点以及如何进行实际操作,旨在帮助读者全面理解Ibatis3的工作原理与应用场景。 ### 一、Ibatis3简介 Ibatis3是一款...

    ibatis基础知识详解

    在Java应用中,Ibatis可以帮助开发者将数据库操作与业务逻辑分离,从而简化开发工作,提高代码可读性和可维护性。 ## 1. Ibatis简介 Ibatis最初由Clinton Begin创建,后被Google Code托管,并在2010年迁移到GitHub...

    Spring与iBATIS的集成

    Spring与iBATIS的集成 iBATIS似乎已远离众说纷纭的OR框架之列,通常人们对非常流行的Hibernate情有独钟。但正如Spring A Developer's Notebook作者Bruce Tate 和Justin Gehtland所说的那样,与其他的OR框架相比...

Global site tag (gtag.js) - Google Analytics