请问ibatis的sqlMap配置文件 ${value} 和 #{id} 什么区别?

<updateid="excuteUpdate"parameterType="java.lang.String"><![CDATA[${value}]]></update... <update id = "excuteUpdate" parameterType="java.lang.String">
<![CDATA[${value}]]>
</update>

<select id="delStudentByNameObj" parameterType="com.bean.student">
delete from student where name = #{name}
</select>

为什么变量的设置 一个用${} 一个用#{} ,这俩有啥区别,啥时候用对应的写法?
展开
 我来答
373256
2012-05-16
知道答主
回答量:31
采纳率:0%
帮助的人:15.7万
展开全部
用到#和$来获取传的参数值,其中#是将传来的值替换(如果是字符串,会将‘’带着替换,比如上面$tableName$,用#tableName#的话,就会出错‘topline’_info,导致SQL语句无法运行),而$值替换值,和参数类型没关系。
追问
啥意思?两个都是值替换?有啥区别?一个带类型,一个不带类型吗?假如我传个String #{name} "zs" 就会带引号,${name} 就是zs ,是这个意思吗?
追答
嗯,会带类型,你在运行的时候调试一下,看看他的值就知道有什么区别,这样也有利于加深记忆!
zyxzyx16688
高粉答主

2018-01-06 · 繁杂信息太多,你要学会辨别
知道大有可为答主
回答量:3.4万
采纳率:65%
帮助的人:1969万
展开全部
用到#和$来获取传的参数值,其中#是将传来的值替换(如果是字符串,会将‘’带着替换,比如上面$value$,用#value#的话,就会出错。
#与$的使用区别:
$中间的变量就是直接替换成值的
#会根据变量的类型来进行替换
比如articleTitle的类型是string, 值是"标题"的时候
$articleTitle$ = 标题
#articleTitle# = '标题'
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
XIAO1346123
推荐于2018-01-26 · TA获得超过737个赞
知道小有建树答主
回答量:643
采纳率:72%
帮助的人:184万
展开全部
${value}=1;
select * from table where a='${value} '
实际查询sql是 select * from table where a='1' 这种方式会有sql注入风险,并且数据库编译sql工作量会大 建议使用下面哪种
select * from table where a=#{value}
实际查询sql是 select * from table where a=?
<![CDATA[ ${value} ]]> 这个标签是防止 ${value}里有特殊的xml符号 例如 >号
本回答被网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
爱吃猫的饼干c
2018-01-06
知道答主
回答量:1
采纳率:0%
帮助的人:916
展开全部
${}是拼接符。。 。#{}是占位符。。。 不推荐使用${}。。。因为会出现sql注入的问题。。。 用法‘% ${value}%’这种用于模糊查询 “而下面的方法是错误的”%#{value}%”。。。其实第一种方法就是为了解决第#{}不足而衍生出来的方法。。。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
百度网友f2b7757
2018-01-26 · 超过36用户采纳过TA的回答
知道小有建树答主
回答量:90
采纳率:0%
帮助的人:37.3万
展开全部

这里<bind>的value值会使用OGNL计算。

注:对<bind参数的调用可以通过#{}或 ${} 方式获取,#{}可以防止注入

在通用Mapper中支持一种UUID的主键,在通用Mapper中的实现就是使用了<bind>标签,这个标签调用了一个静态方法,大概方法如下:

<bind name="username_bind"
value='@java.util.UUID@randomUUID().toString().replace("-", "")' />12

这种方式虽然能自动调用静态方法,但是没法回写对应的属性值,因此使用时需要注意。

此段来源于csdn--isea533的博客

已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 3条折叠回答
收起 更多回答(5)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式