`
y806839048
  • 浏览: 1127534 次
  • 性别: Icon_minigender_1
  • 来自: 上海
文章分类
社区版块
存档分类
最新评论

mybatis 占位符$ 与#区别

 
阅读更多

<select id="getTbCusFirmChgAry" parameterType="map" resultMap="BaseResultMapVo">

  select C.* from TB_CUS_FIRM_CHG C 

  where 1=1

  <if test="sCustomerID!=null and sCustomerID!=''">

   and lower(C.CUSTOMER_ID) like '%${sCustomerID}%'

  </if>

<if test="comp_type!=null and comp_type!=''">

     and C.COMP_TYPE =#{comp_type}

  </if>

</select>

 

=======sql语句如下========

Preparing: SELECT count(*) FROM TB_CUS_FIRM_CHG C WHERE 1 = 1 AND lower(C.CUSTOMER_ID) LIKE '%e00000005%' AND C.COMP_TYPE = ? 

 

Parameters: B(String)

 

$直接嵌sql中,#以参数的形式传入

此中B如果用$直接传入 LIKE '%e00000005%' AND C.COMP_TYPE =B

数据库会报找不到B错误。  ORA-00904: "B": 标识符无效

 

 

 lower(C.CUSTOMER_ID)  :lower函数的意义是把数据库中此字段的值全部变为小写

 

 

 

 

分享到:
评论

相关推荐

    Java Mybatis中的 ${ } 和 #{ }的区别使用详解

    Java Mybatis 中的 ${ } 和 #{ } 是两个不同的占位符,都是用于在 Mybatis 中进行动态 SQL 语句的构建和参数传递。然而,这两个占位符在使用时有着极其重要的区别。 首先,让我们来看一个简单的示例代码。假设我们...

    Mybatis下动态sql中##和$$的区别讲解

    一个#{ }被解析为一个参数占位符?。而${ }仅仅为一个纯碎的string替换,在动态SQL解析阶段将会进行变量替换。例如,Mapper.xml中如下的SQL: select * from user where name = ${name}; 当我们传递的参数为"Jack...

    MyBatis中使用$和#所遇到的问题及解决办法

    - #{ }:这是MyBatis中的预编译参数标记,它会将参数转化为PreparedStatement的参数占位符,类似于Java中的`?`。当MyBatis遇到`#{ }`时,它会将参数值转化为PreparedStatement的参数,这样可以防止SQL注入。例如,...

    浅谈Mybatis #和$区别以及原理

    Mybatis是一款流行的持久层框架,它提供了两个占位符:#和$,它们均用于参数化SQL语句,但是它们的作用和原理却有所不同,本文将详细介绍这两者的区别和原理。 #和$的区别 在Mybatis中,#和$都是占位符,但是它们...

    ibatis中 $ 于 # 的 区别

    在MyBatis中,#{}主要用来实现SQL语句中的占位符替换,它能够有效防止SQL注入攻击,并且能够自动进行类型转换。 - **例子**:比如我们有一个参数`user_id_list`,其值为`1,2`,使用`#{user_id_list}`时,MyBatis...

    java字符串中${}或者{}等的占位符替换工具类

    Java字符串中${}或者{}等占位符替换工具类 Java字符串中${}或者{}等占位符替换工具类是一个功能强大且实用的工具类,它可以将Java字符串中的占位符依次替换为指定的值。该工具类的主要功能是实现占位符的替换,即将...

    Mybatis日志参数快速替换占位符工具的详细步骤

    Mybatis日志参数快速替换占位符工具是一个实用的辅助工具,它可以帮助开发者在调试过程中更方便地查看和理解Mybatis执行的SQL语句。在默认的日志输出中,Mybatis使用占位符(?)表示传入的参数,这在某些情况下可能...

    mybatis 日志 sql参数替换工具

    非常好用的,就是你们所要的 Mybatis日志参数快速替换占位符 sql参数替换工具html

    Mybatis中#{}和${}传参的区别及#和$的区别小结

    在MyBatis框架中,`#{}`和`${}`是两种不同的参数占位符,它们在处理传参时有着显著的差异,同时也关联到`#`和`$`的区别。理解这些差异对于编写安全且高效的SQL查询至关重要。 首先,`#{}`是MyBatis的预编译参数占位...

    SQL语句填充占位符

    MyBatis允许在XML映射文件或注解中使用#{param}作为占位符,Hibernate则支持HQL(Hibernate Query Language)和Criteria API,它们都提供了更强大的动态查询能力。 例如,在MyBatis中,你可以这样写: ```xml ...

    MyBatis 中 ${}和 #{}的正确使用方法(千万不要乱用)

    在MyBatis框架中,${} 和 #{} 是两种不同的参数占位符,它们的使用方式和作用有明显的区别,对于SQL语句的安全性和效率有着重要影响。 1. #{} #{} 是预编译处理的方式,也被称为参数绑定或者预处理。在处理 #{ } ...

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

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

    Spring及Mybatis整合占位符解析失败问题解决

    Spring及Mybatis整合占位符解析失败问题解决 Spring framework和Mybatis是两个非常popular的Java框架,前者是一个基于Java的开源框架,提供了一个通用的编程模型和配置机制,可以帮助开发者快速开发企业级应用程序...

    关于MyBatis参数传入#{index}的问题的解决方案【源码】

    在MyBatis中,#{index}是参数占位符,它用于动态SQL的拼接,但具体如何使用,特别是当有多个参数时,可能会引发困惑。本文将深入探讨这个问题,提供解决方案,并通过源码分析来解释其工作原理。 首先,让我们明确...

    mybatis如何防止SQL注入

    具体做法是在SQL语句中使用`#{}`来表示参数占位符,如: ```xml SELECT id, title, author, content FROM blog WHERE id = #{id} ``` 当执行上述SQL语句时,无论`#{id}`被赋予什么值,最终执行的SQL总是形如: ...

    浅谈mybatis中的#和$的区别

    在MyBatis中,`#`和`$`是用来动态构造SQL语句的占位符,它们的区别主要在于SQL预编译和防止SQL注入的能力。理解这两种符号的用法对于编写安全、高效的MyBatis映射文件至关重要。 1. `#`占位符: - `#`将传入的数据...

    mybatis_01 入门配置 Dao的两种开发方法

    - **占位符与字符串拼接**: - **占位符 #{}**: - 相当于 JDBC 中的问号占位符。 - 可用于 Java 基本类型及 String。 - **字符串拼接符 ${}**: - 当参数为 Java 简单类型时,花括号内只能填写 `value`。 - 用于...

    mybatis文档

    MyBatis 支持多种方式传递参数到 SQL 语句中,包括使用 `#{}` 占位符、使用 Map 作为参数等。 ##### 5.1 使用 #{} ```xml SELECT * FROM users WHERE id = #{id} ``` 在此示例中: - `parameterType` 定义了...

    IDEA的MyBatis插件两个

    1. 代码自动生成:当编写Mapper接口时,MyBatisCodeHelper-Pro能自动生成对应的XML配置文件,同时在XML文件中自动生成SQL语句的占位符和方法签名,极大地减少了手动编写的工作量。 2. SQL提示与补全:该插件支持...

    Mybatis排序无效问题解决.doc

    预编译过程中,`#{}`内的表达式被视为参数值而非SQL的一部分,因此会被转换为字符串形式,再通过占位符(如`?`)进行替换。这种方式虽然增强了安全性,但在处理动态SQL(如排序条件)时却可能导致问题。 2. **动态...

Global site tag (gtag.js) - Google Analytics