- 浏览: 190030 次
- 性别:
- 来自: 上海
文章分类
最新评论
在Ibatis中我们使用SqlMap进行Sql查询时需要引用参数,在参数引用中遇到的符号#和$之间的区分为,#可以进行与编译,进行类型匹配,而$不进行数据类型匹配,例如:
select * from table where user_id = #id# ,其中如果数据库字段user_id为字符型,那么#id#表示的就是字符类型,如果user_id为整型,那么#id#就是整型。
select * from table where user_id = $id$ ,如果字段user_id为整型,Sql语句就不会出错,但是如果字段id为字符型,这样写会出现错误,比如传入值为eferer,
select * from table where user_id = eferer,但user_id为字符型,所以会报错。
那么Sql语句应该写成 select * from table where user_id = '$id$',最终生成的sql是
select * from table where user_id = 'eferer';
$ 的作用实际上是字符串拼接,
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 514一、初始化 1,直接调用 [java] view plai ... -
Reactor、Disruptor
2016-04-27 12:55 1079Reactor 主要用于帮助开发者创建基于JVM的异步应用程序 ... -
mybatis 帮助文档
2016-04-22 11:01 509http://www.mybatis.org/mybatis- ... -
spring mybatis
2016-03-25 15:43 543org.mybatis.spring.SqlSessionTe ... -
mybatis深入
2016-03-21 13:59 485-------Mybatis数据源与连 ... -
关于 mybatis 传参
2016-03-18 10:46 552基本数据类型:包含int,String,Date等。基本数据类 ... -
spring 加载配置文件 xml 和properties
2016-03-17 17:12 2937Spring配置文件是集成了Spring框架的项目的核心,引擎 ... -
spring 事务 提交
2016-03-07 15:16 788如果你不启用事务,默认是自动提交的,不需要设置autoComm ... -
mybatis 、jdbc 、 spring事务模板
2016-03-04 16:22 852mybatis深入: http://b ... -
mybatis 转义字符
2015-11-28 16:23 20571、在xml的sql语句中,不能直接用大于号、小于号要用转义字 ... -
mybatis jdbc 字段映射类型
2015-09-29 14:38 2111mybatis常用jdbcType数据类型 MyBati ... -
org.springframework.jdbc.support.lob.DefaultLobHandler
2015-06-04 10:51 638http://www.ibm.com/developerwor ... -
spring bean 继承与 java 继承异同
2015-01-08 10:36 798bean的定义中可能会包含 ... -
spring 延迟加载与 init-method,afterPropertiesSet和BeanPostProcessor
2015-01-06 10:44 2583ApplicationContext实现的默认行为就是在启动时 ... -
Spring MethodInterceptor
2015-01-05 18:23 801我们知道在Spring中一共提供了四种Advice用来支持对方 ... -
Spring BeanNameAutoProxyCreator 与 ProxyFactoryBean
2015-01-05 18:10 822一般我们可以使用ProxyBeanFactory,并配置pro ... -
Spring aop 原理及各种应用场景
2015-01-05 17:16 8165AOP是Aspect Oriented Programing的 ... -
ibatis逻辑分页与物理分页
2014-12-31 14:26 583一 直以来ibatis的分页都是通过滚动ResultSet实现 ... -
iBATIS mybatis 配置 说明
2014-12-30 17:27 1455SqlMapClientFactoryBean的主要的几个属性 ...
相关推荐
### ibatis中输入输出各种类型的参数分析及#与$区别 #### iBatis简介与特点 iBatis作为一款轻量级的Java持久层框架,以其简洁、灵活的特点,在众多框架中占据一席之地。相较于知名的Hibernate框架,iBatis在实现上...
### ibatis中 $ 与 # 的区别 在ibatis(现称为MyBatis)框架中,$ 和 # 是两种不同的动态SQL元素标记,用于处理参数传递的问题。它们各自有着独特的功能和应用场景,对于理解这两者的差异是十分重要的,因为这会...
其中,单引号(`'`)被替换为两个单引号(`''`),这是为了防止字符串中的单引号与SQL语句中的单引号发生冲突。而斜杠(`/`)、百分号(`%`)以及下划线(`_`)都被加上了转义字符斜杠(`/`)。 ##### 2.2 使用动态SQL标签 ...
### 操作数据库iBATIS查询详解 #### 一、iBATIS中的LIKE查询技巧 ...通过以上配置,iBATIS能够有效地管理与数据库的交互过程,并提供强大的查询功能。在实际开发过程中,根据项目需求合理配置这些参数是非常重要的。
在使用iBATIS(现已被MyBatis取代)进行数据库操作时,我们常常需要传递参数到SQL语句中。在iBATIS中,有两种主要的方式来处理这些参数:使用`$`和`#`。这两种方式在不同的场景下有不同的效果。 首先,让我们来看看...
Ibatis 是一款轻量级的Java持久层框架,它允许开发者将SQL语句与Java代码分离,从而使得数据库访问更加灵活、易于维护。本篇文章将深入探讨Ibatis的核心概念、最佳实践以及与其他框架如Struts和Spring的整合。 1. ...
iBatis 是一款轻量级的Java持久层框架,它主要负责将数据库操作与业务逻辑解耦,使得开发者可以更加专注于SQL和业务代码的编写。本文档将详细讲解iBatis的核心概念、快速入门以及高级特性。 ### iBatis 快速启动 #...
本篇文章基于“Ibatis3手册 Ibatis3参考手册”的标题及描述,深入解析Ibatis3的核心概念、架构特点以及如何进行实际操作,旨在帮助读者全面理解Ibatis3的工作原理与应用场景。 ### 一、Ibatis3简介 Ibatis3是一款...
Spring与iBATIS的集成 iBATIS似乎已远离众说纷纭的OR框架之列,通常人们对非常流行的Hibernate情有独钟。但正如Spring A Developer's Notebook作者Bruce Tate 和Justin Gehtland所说的那样,与其他的OR框架相比...
ibatis,作为一款“半自动化”的对象关系映射(Object-Relational Mapping,简称ORM)工具,其设计理念与传统的ORM框架如Hibernate和Apache OJB有所不同。它在提供一定程度的自动映射功能的同时,也保留了对SQL语句...
此外,iBatis还支持Map迭代,当查询结果中的列名与Java对象的属性不完全匹配,或者需要处理多表联查结果时,Map迭代非常有用。例如: ```java List, Object>> maps = sqlSession.selectList(...
Ibatis,全称为MyBatis,是一个优秀的Java持久层框架,它主要负责SQL映射,使得开发者能够将SQL语句与Java代码分离,从而更好地管理数据库操作。Ibatis的出现,解决了传统JDBC中手动编写SQL和结果集映射的繁琐工作,...
根据提供的文件信息,本文将详细解析如何在Spring与ibatis框架整合时,通过特定配置来保留ibatis事务处理机制,并实现对事务的自定义控制。文章将围绕标题、描述及部分代码片段展开讨论。 ### Spring与ibatis整合...
### ibatis与Spring框架整合详解 #### 一、ibatis简介 ibatis是一个开源的、基于Java的持久层框架,它提供了SQL映射的方式来进行数据库访问。与Hibernate等其他ORM框架相比,ibatis更加轻量级,对于那些只需要简单...
在Java应用中,Ibatis可以帮助开发者将数据库操作与业务逻辑分离,从而简化开发工作,提高代码可读性和可维护性。 ## 1. Ibatis简介 Ibatis最初由Clinton Begin创建,后被Google Code托管,并在2010年迁移到GitHub...
- **SQL与代码分离**:ibatis允许开发者编写纯SQL语句,并通过XML配置文件或者注解的方式将这些SQL语句与Java对象关联起来,实现了SQL与业务逻辑的分离。 - **高级映射**:ibatis支持自动结果集到Java对象的映射,...
以及ibatis的概述、如何开始使用ibatis、构建SqlSessionFactory的方法(包括通过XML和不使用XML的方式)、获取SqlSession的过程、探索映射SQL语句的方法、命名空间的注意事项、作用域与生命周期的解释、mapper配置...
五、iBatis与MyBatis的区别与联系 MyBatis是iBatis的升级版,它继承了iBatis的所有优点,并做了很多改进,比如引入了注解支持、增强了对Spring的整合等。MyBatis更加现代化,社区活跃,持续维护,而iBatis则停止了...