`
jsczxy2
  • 浏览: 1273837 次
  • 性别: Icon_minigender_1
  • 来自: 常州
文章分类
社区版块
存档分类
最新评论

ibatis中井号跟美元符号区别(#、$)

阅读更多

1、#可以进行预编译,进行类型匹配,#变量名#  会转化为 jdbc 的 类型
   $不进行数据类型匹配,$变量名$就直接把 $name$替换为 name的内容
   例如:
     select * from tablename where id = #id# ,假设id的值为12,其中如果数据库字段id为字符型,那么#id#表示的就是'12',如果id为整型,那么#id#就是 12
    会转化为jdbc的 select * from tablename where id=?,把?参数设置为id的值
     select * from tablename where id = $id$ ,如果字段id为整型,Sql语句就不会出错,但是如果字段id为字符型,
     那么Sql语句应该写成 select * from table where id = '$id$'
    
3、#方式能够很大程度防止sql注入.
4、$方式无法方式sql注入.
5、$方式一般用于传入数据库对象.例如传入表名.
6、所以ibatis用#比$好,一般能用#的就别用$.
另外,使用##可以指定参数对应数据库的类型
如:
select * from tablename where id = #id:number# 
 
在做in,like 操作时候要特别注意


总结以下:
$号使用在具体pojo类也就是非基本类型的取值,而#号使用在具体有基本类型的取值
<sql id="Update_By_Example_Where_Clause">
    <where>
      <foreach collection="example.oredCriteria" item="criteria" separator="or">
        <if test="criteria.valid">
          <trim prefix="(" prefixOverrides="and" suffix=")">
            <foreach collection="criteria.criteria" item="criterion">
              <choose>
                <when test="criterion.noValue">
                  and ${criterion.condition}
                </when>
                <when test="criterion.singleValue">
                  and ${criterion.condition} #{criterion.value}
                </when>
                <when test="criterion.betweenValue">
                  and ${criterion.condition} #{criterion.value} and #{criterion.secondValue}
                </when>
                <when test="criterion.listValue">
                  and ${criterion.condition}
                  <foreach close=")" collection="criterion.value" item="listItem" open="(" separator=",">
                    #{listItem}
                  </foreach>
                </when>
              </choose>
            </foreach>
          </trim>
        </if>
      </foreach>
    </where>
  </sql>
 
分享到:
评论
1 楼 yhxf_ie 2016-04-27  

相关推荐

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

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

    ibatis中 $ 于 # 的 区别

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

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

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

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

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

    J2EE学习 Ibatis开发资料共享 Ibatis开发资料 Ibatis学习框架 Ibatis开发概要

    ### J2EE学习:Ibatis开发资料概要 #### 一、Ibatis简介与特点 Ibatis是一款半自动化的ORM(Object Relational Mapping)框架,它不像Hibernate等其他ORM工具那样提供完全自动化的数据库操作,而是更侧重于SQL语句...

    iBatis和Hibernate的区别

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

    ibatis总结 ibatis ibatis ibatis ibatis

    在Ibatis中,参数可以通过`#`或`$`符号传递。例如,`select * from PRODUCT where PRD_CAT_ID = #{value}`中的`#{value}`是预编译参数,能有效防止SQL注入。 总结,Ibatis提供了灵活的SQL映射机制,使得开发人员...

    Ibatis3手册 Ibatis3参考手册

    ### Ibatis3手册知识点概述 Ibatis3作为一款流行的持久层框架,在软件开发领域具有重要的地位。本篇文章基于“Ibatis3手册 Ibatis3参考手册”的标题及描述,深入解析Ibatis3的核心概念、架构特点以及如何进行实际...

    ibatis基础知识详解

    **Ibatis基础知识详解** Ibatis,全称MyBatis,是一个优秀的开源持久层框架,它支持定制化SQL、存储过程以及高级映射。在Java应用中,Ibatis可以帮助开发者将数据库操作与业务逻辑分离,从而简化开发工作,提高代码...

    Spring+ibatis 保留ibatis事务的配置

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

    iBatis文档\ibatis.doc

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

    Ibatis开发实例

    ### Ibatis开发实例详解 #### 一、Ibatis简介与背景 Ibatis 是一个由 Clinton Begin 在 2001 年发起的开源项目,其名称来源于“internet”和“abatis”的组合。最初,该项目的重点是密码软件的开发,但随着时间的...

    Spring对IBatis的整合

    ### Spring对IBatis的整合 #### 一、Spring与IBatis整合概述 Spring框架与IBatis(现称为MyBatis)的整合为开发者提供了一种更简洁、更强大的数据库访问方式。Spring通过其内置的支持机制极大地简化了原有的IBatis...

    myBatis和ibatis的区别

    ### myBatis与ibatis的区别 #### 一、概述 myBatis与ibatis是两款在Java领域中非常流行的持久层框架,它们均基于SQL映射机制,为开发者提供了便捷的方式来处理数据库操作。两者间的关系密切,ibatis是myBatis的...

    J2EE iBatis 概述

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

    ibatis环境搭建教程

    ### ibatis环境搭建教程 #### 一、ibatis简介与特点 ibatis是一个开源的持久层框架,它提供了一种简单而强大的ORM(Object-Relational Mapping)实现方式,能够帮助开发者更高效地进行Java应用及数据库之间的交互...

Global site tag (gtag.js) - Google Analytics