请问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>
为什么变量的设置 一个用${} 一个用#{} ,这俩有啥区别,啥时候用对应的写法? 展开
<![CDATA[${value}]]>
</update>
<select id="delStudentByNameObj" parameterType="com.bean.student">
delete from student where name = #{name}
</select>
为什么变量的设置 一个用${} 一个用#{} ,这俩有啥区别,啥时候用对应的写法? 展开
7个回答
展开全部
用到#和$来获取传的参数值,其中#是将传来的值替换(如果是字符串,会将‘’带着替换,比如上面$tableName$,用#tableName#的话,就会出错‘topline’_info,导致SQL语句无法运行),而$值替换值,和参数类型没关系。
追问
啥意思?两个都是值替换?有啥区别?一个带类型,一个不带类型吗?假如我传个String #{name} "zs" 就会带引号,${name} 就是zs ,是这个意思吗?
追答
嗯,会带类型,你在运行的时候调试一下,看看他的值就知道有什么区别,这样也有利于加深记忆!
展开全部
用到#和$来获取传的参数值,其中#是将传来的值替换(如果是字符串,会将‘’带着替换,比如上面$value$,用#value#的话,就会出错。
#与$的使用区别:
$中间的变量就是直接替换成值的
#会根据变量的类型来进行替换
比如articleTitle的类型是string, 值是"标题"的时候
$articleTitle$ = 标题
#articleTitle# = '标题'
#与$的使用区别:
$中间的变量就是直接替换成值的
#会根据变量的类型来进行替换
比如articleTitle的类型是string, 值是"标题"的时候
$articleTitle$ = 标题
#articleTitle# = '标题'
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
${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符号 例如 >号
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符号 例如 >号
本回答被网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
${}是拼接符。。 。#{}是占位符。。。 不推荐使用${}。。。因为会出现sql注入的问题。。。 用法‘% ${value}%’这种用于模糊查询 “而下面的方法是错误的”%#{value}%”。。。其实第一种方法就是为了解决第#{}不足而衍生出来的方法。。。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
这里<bind>的value值会使用OGNL计算。
注:对<bind参数的调用可以通过#{}或 ${} 方式获取,#{}可以防止注入。
在通用Mapper中支持一种UUID的主键,在通用Mapper中的实现就是使用了<bind>标签,这个标签调用了一个静态方法,大概方法如下:
<bind name="username_bind"
value='@java.util.UUID@randomUUID().toString().replace("-", "")' />12
这种方式虽然能自动调用静态方法,但是没法回写对应的属性值,因此使用时需要注意。
此段来源于csdn--isea533的博客
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询