`
ql0722
  • 浏览: 7402 次
  • 性别: Icon_minigender_2
  • 来自: 黑龙江
最近访客 更多访客>>
社区版块
存档分类
最新评论

Ibatis中#和$两个符号的使用区别

阅读更多
Ibatis中#和$两个符号的使用区别
一般在Ibatis的动态SQL部分,使用例如#id#,$id$这样的格式,
1、在复杂动态SQL语句中,类似#field#,如果field变量值为id,则Ibatis会将#field#转换为‘id’;
     例如:<statement id ="getProduct" resultMap="get-product-result">
                   SELECT * FROM PRODUCT
                   <dynamic prepend="WHERE">
                         <isNotEmpty property="description">
                               PRD_DESCRIPTION $operator$  #description#
                         </isNotEmpty>
                   </dynamic>
                 </statement>
        上面的例子中,参数对象的operator属性将用于替换符号$operator$,假设operator属性等于“like”,description属性等于“%dog%”,生成的SQL语句如下,
SELECT * FROM PRODUCT WHERE PRD_DESCRIPTION  LIKE '%dog%'
在复杂动态SQL语句中(即语句中有<dynamic >,<isNotEmpty>等标签,<iterate>标签除外),##中的变量解析之后会被''括起来,作为一个String;
$$中的变量会直接解析;

2、在包含iterate的动态语句中,必须使用##,但是不会作为String来处理,而是直接解析变量,例如:
     <update id="updateCDNSRVFileStatus" >
         update #tableName# set STATUS = #status#  
              <isPropertyAvailable prepend="WHERE" property="videoFileIds" >
                        FILE_ID  IN
                      <iterate property="videoFileIds" open="(" close=")" conjunction=",">
                           #videoFileIds[]#
                      </iterate>
             </isPropertyAvailable> 
      </update>
分享到:
评论

相关推荐

    ibatis中 $ 于 # 的 区别

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

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

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

    ibatis资料

    在Ibatis的动态SQL中,`#`和`$`是两个关键符号,它们代表不同的占位符处理方式: 1. **`#`**:预编译参数,用于传入参数,会将参数包裹在`PreparedStatement`的占位符`?`中,防止SQL注入。例如: ```xml SELECT...

    ibatis的动态查询

    **知识点1:** 在进行模糊查询时,ibatis支持两种不同的语法标记:`#` 和 `$`。 1. **使用 `$value$` 进行模糊查询:** - 在进行模糊查询时,使用 `$value$` 的方式更为安全且易于实现。 - 正确的语法应为 `name ...

    ibatis list

    这两个属性分别定义了迭代结果的开始和结束符号,常用于括号的开闭,如`(`和`)`,以确保SQL语句的语法正确性。 #### `prepend`属性 `prepend`属性在`open`符号之前添加额外的内容,有时用于调整SQL语句的格式。 #...

    iBATIS&Spring合奏(二)--Flex前端融合

    在“iBATIS&Spring合奏(二)--Flex前端融合”中,博主Yunshen0909分享了关于如何在Java Web应用中结合使用这两种技术,特别是如何与Flex前端进行集成,以提升用户体验。 首先,iBATIS是一个持久层框架,它简化了...

    mybatis老师总结

    - **Executor 执行器**:MyBatis 自定义了 Executor 接口来操作数据库,该接口有两个实现:基本执行器和缓存执行器。 - **MappedStatement**:这是 MyBatis 的一个底层封装对象,包装了 MyBatis 配置信息及 SQL 映射...

    程序员常见的WEB安全漏洞.pptx

    此PPT详细讲解了两个常见的Web安全漏洞:SQL注入和XSS(跨站脚本攻击)。 **SQL注入** SQL注入是由于对用户输入的数据缺乏有效的验证,允许攻击者在应用程序的SQL查询中插入恶意代码,从而执行非授权的操作。这种...

    springmybatis

    1. 在MyBatis 里面创建两个源码目录,分别为 src_user,test_src, 用如下方式建立,鼠标右键点击 JavaResource. 2. 设置mybatis 配置文件:Configuration.xml, 在src_user目录下建立此文件,内容如下: 程序代码 程序...

Global site tag (gtag.js) - Google Analytics