- 浏览: 192051 次
- 性别:
- 来自: 上海
-
文章分类
最新评论
在sql配置中比如in(#rewr#) 与in ($rewr$)
在Ibatis中我们使用SqlMap进行Sql查询时需要引用参数,在参数引用中遇到的符号#和$之间的区分为,#可以进行与编译,进行类型匹配,而$不进行数据类型匹配,例如:
select * from table where id = #id# ,其中如果字段id为字符型,那么#id#表示的就是'id'类型,如果id为整型,那么#id#就是id类型。
select * from table where id = $id$ ,如果字段id为整型,Sql语句就不会出错,但是如果字段id为字符型,那么Sql语句应该写成 select * from table where id = '$id$'
如若不然,就要这样写 Like
like '%'||#word#||'%'
$ 的作用实际上是字符串拼接,
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注入问题。
在Ibatis中我们使用SqlMap进行Sql查询时需要引用参数,在参数引用中遇到的符号#和$之间的区分为,#可以进行与编译,进行类型匹配,而$不进行数据类型匹配,例如:
select * from table where id = #id# ,其中如果字段id为字符型,那么#id#表示的就是'id'类型,如果id为整型,那么#id#就是id类型。
select * from table where id = $id$ ,如果字段id为整型,Sql语句就不会出错,但是如果字段id为字符型,那么Sql语句应该写成 select * from table where id = '$id$'
如若不然,就要这样写 Like
like '%'||#word#||'%'
$ 的作用实际上是字符串拼接,
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注入问题。
发表评论
文章已被作者锁定,不允许评论。
-
spring boot
2017-11-22 14:12 0spring boot service mesh spring ... -
spring 线程池
2016-07-10 10:26 520一、初始化 1,直接调用 [java] view plai ... -
Reactor、Disruptor
2016-04-27 12:55 1084Reactor 主要用于帮助开发者创建基于JVM的异步应用程序 ... -
mybatis 帮助文档
2016-04-22 11:01 528http://www.mybatis.org/mybatis- ... -
spring mybatis
2016-03-25 15:43 547org.mybatis.spring.SqlSessionTe ... -
mybatis深入
2016-03-21 13:59 492-------Mybatis数据源与连 ... -
关于 mybatis 传参
2016-03-18 10:46 558基本数据类型:包含int,String,Date等。基本数据类 ... -
spring 加载配置文件 xml 和properties
2016-03-17 17:12 2944Spring配置文件是集成了Spring框架的项目的核心,引擎 ... -
spring 事务 提交
2016-03-07 15:16 800如果你不启用事务,默认是自动提交的,不需要设置autoComm ... -
mybatis 、jdbc 、 spring事务模板
2016-03-04 16:22 860mybatis深入: http://b ... -
mybatis 转义字符
2015-11-28 16:23 20861、在xml的sql语句中,不能直接用大于号、小于号要用转义字 ... -
mybatis jdbc 字段映射类型
2015-09-29 14:38 2114mybatis常用jdbcType数据类型 MyBati ... -
org.springframework.jdbc.support.lob.DefaultLobHandler
2015-06-04 10:51 659http://www.ibm.com/developerwor ... -
spring bean 继承与 java 继承异同
2015-01-08 10:36 802bean的定义中可能会包含 ... -
spring 延迟加载与 init-method,afterPropertiesSet和BeanPostProcessor
2015-01-06 10:44 2589ApplicationContext实现的默认行为就是在启动时 ... -
Spring MethodInterceptor
2015-01-05 18:23 809我们知道在Spring中一共提供了四种Advice用来支持对方 ... -
Spring BeanNameAutoProxyCreator 与 ProxyFactoryBean
2015-01-05 18:10 825一般我们可以使用ProxyBeanFactory,并配置pro ... -
Spring aop 原理及各种应用场景
2015-01-05 17:16 8178AOP是Aspect Oriented Programing的 ... -
ibatis逻辑分页与物理分页
2014-12-31 14:26 586一 直以来ibatis的分页都是通过滚动ResultSet实现 ... -
iBATIS mybatis 配置 说明
2014-12-30 17:27 1458SqlMapClientFactoryBean的主要的几个属性 ...
相关推荐
### ibatis中 $ 与 # 的区别 在ibatis(现称为MyBatis)框架中,$ 和 # 是两种不同的动态SQL元素标记,用于处理参数传递的问题。它们各自有着独特的功能和应用场景,对于理解这两者的差异是十分重要的,因为这会...
在使用iBATIS(现已被MyBatis取代)进行数据库操作时,我们常常需要传递参数到SQL语句中。在iBATIS中,有两种主要的方式来处理这些参数:使用`$`和`#`。这两种方式在不同的场景下有不同的效果。 首先,让我们来看看...
### ibatis中输入输出各种类型的参数分析及#与$区别 #### iBatis简介与特点 iBatis作为一款轻量级的Java持久层框架,以其简洁、灵活的特点,在众多框架中占据一席之地。相较于知名的Hibernate框架,iBatis在实现上...
### myBatis与ibatis的区别 #### 一、概述 myBatis与ibatis是两款在Java领域中非常流行的持久层框架,它们均基于SQL映射机制,为开发者提供了便捷的方式来处理数据库操作。两者间的关系密切,ibatis是myBatis的...
### iBatis与Hibernate的主要区别 #### 一、概述 iBatis与Hibernate都是Java领域内流行的ORM(Object-Relational Mapping,对象关系映射)框架,用于简化Java应用程序与数据库之间的交互。尽管它们有着相似的目标,...
虽然 iBatis 在某些方面与 Hibernate 类似,但它们之间的主要区别在于 iBatis 提供了更细粒度的 SQL 控制能力,这使得 iBatis 在复杂查询或性能敏感的应用场景中更具优势。 ### 二、动态 SQL 的概念 在实际应用中...
### ibatis与hibernate的区别 #### 一、概述 在Java开发领域中,持久化技术是连接应用程序与数据库之间的重要桥梁。其中,ibatis(现称为MyBatis)和Hibernate作为两种主流的对象关系映射(Object Relational ...
#### 二、ibatis与全自动化ORM工具的区别 ibatis之所以被称为“半自动化”的ORM实现,主要是因为它并不像Hibernate或Apache OJB那样提供对数据库结构的完全封装。使用ibatis时,开发者需要自己编写SQL语句,并通过...
5. **参数映射与结果映射**:学习如何将Java对象的属性与SQL语句中的占位符进行映射,以及如何将查询结果自动转换为Java对象,理解#{}和${}的区别。 6. **事务管理**:了解iBATIS如何处理事务,包括手动控制和自动...
- 在ibatis中,通过XML映射文件定义SQL语句以及SQL结果与Java对象之间的映射规则。 - **ibatis中的对象关系映射机制**: - 通过在XML映射文件中定义SQL语句,ibatis能够将查询结果自动映射到Java对象上。 - 支持...
### 使用Axis 1.4与iBatis 2.3开发WebService服务 #### 背景及选择原因 本文档旨在介绍如何使用Axis 1.4结合iBatis 2.3来构建一个稳定的WebService服务。尽管Axis 2提供了一些改进和新特性,但在实际项目部署过程...
Ibatis 2.3与其他版本的区别** 虽然Ibatis后续版本(如3.x)引入了许多新特性,如注解支持、更强大的XML配置、更多类型的参数映射等,但2.3版本依然在很多项目中被使用,因为它简洁、稳定,对于小型项目或对性能...
本文将基于提供的文件信息,深入探讨ibatis与Hibernate之间的区别,特别是ibatis相较于Hibernate的优缺点。 #### 二、ibatis的优点 1. **灵活性高**:ibatis允许开发者直接编写SQL语句,并提供丰富的SQL映射配置...
**八、IBATIS与MyBatis的区别** MyBatis是IBATIS的升级版,增加了注解支持,使得SQL与Java代码的绑定更加灵活,同时社区活跃度更高,更新更频繁。 总结来说,IBATIS是一个强大的数据访问框架,它通过XML配置和Java...
本压缩包文件“abc.rar_ABC_ibatis”包含了对这两者进行深入比较的经典文档“ibatis与hibernate的区别.doc”。现在,我们将详细探讨iBatis和Hibernate的主要差异,以及它们各自的特点。 首先,iBatis,由MyBatis的...
在IT领域,数据库持久化是应用开发中的重要环节,Ibatis和Hibernate是两种常见的ORM(对象关系映射)框架,它们都有各自的特点和优势。本文将深入探讨这两者之间的分析比较。 首先,Hibernate是一个全面的对象关系...
【压缩包子文件的文件名称列表】:这里列出的“赚钱项目”与主题“ibatis迁移到mybatis3”似乎不直接相关,可能是压缩包中的文件列表显示错误或者包含额外的无关文件。因此,我们主要关注的是与迁移过程相关的知识点...
### Flex教程核心知识点详解 ...在后续章节中,本教程将详细介绍如何将Flex与Java技术整合,特别是如何使用BlazeDS、Spring、iBatis、Cairngorm 和 pureMVC 这些框架来进行集成开发,从而实现高效、稳定的RIA应用开发。
##### JSP9大隐视对象中四个作用域的大小与作用范围 - **pageContext**:最小的作用范围,仅限于当前页面。 - **request**:当前HTTP请求的范围内有效。 - **session**:用户会话的范围内有效。 - **application**:...