请问ibatis的sqlMap配置文件 $value 和 #id 啥区别?
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了请问ibatis的sqlMap配置文件 $value 和 #id 啥区别?相关的知识,希望对你有一定的参考价值。
<update id = "excuteUpdate" parameterType="java.lang.String">
<![CDATA[$value]]>
</update>
<select id="delStudentByNameObj" parameterType="com.bean.student">
delete from student where name = #name
</select>
为什么变量的设置 一个用$ 一个用# ,这俩有啥区别,啥时候用对应的写法?
啥意思?两个都是值替换?有啥区别?一个带类型,一个不带类型吗?假如我传个String #name "zs" 就会带引号,$name 就是zs ,是这个意思吗?
追答嗯,会带类型,你在运行的时候调试一下,看看他的值就知道有什么区别,这样也有利于加深记忆!
参考技术A 用到#和$来获取传的参数值,其中#是将传来的值替换(如果是字符串,会将‘’带着替换,比如上面$value$,用#value#的话,就会出错。#与$的使用区别:
$中间的变量就是直接替换成值的
#会根据变量的类型来进行替换
比如articleTitle的类型是string, 值是"标题"的时候
$articleTitle$ = 标题
#articleTitle# = '标题' 参考技术B $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 $是拼接符。。 。#是占位符。。。 不推荐使用$。。。因为会出现sql注入的问题。。。 用法‘% $value%’这种用于模糊查询 “而下面的方法是错误的”%#value%”。。。其实第一种方法就是为了解决第#不足而衍生出来的方法。。。 参考技术D
这里<bind>的value值会使用OGNL计算。
注:对<bind参数的调用可以通过#或 $ 方式获取,#可以防止注入。
在通用Mapper中支持一种UUID的主键,在通用Mapper中的实现就是使用了<bind>标签,这个标签调用了一个静态方法,大概方法如下:
<bind name="username_bind"
value='@java.util.UUID@randomUUID().toString().replace("-", "")' />12
这种方式虽然能自动调用静态方法,但是没法回写对应的属性值,因此使用时需要注意。
此段来源于csdn--isea533的博客
org.apache.ibatis.annotations.param 用啥jar包
参考技术A ibatis的包:ibatis-sqlmap.jar ibatis需要log4j支持: log4j.jar spring内置的ibatis支持还需要aspect的包 根据数据库的不同还需要数据库驱动包 数据库配链接池可能还需要c3p0 如果你不是新手建议用maven2管理jar包,我可以把xml文件给你本回答被提问者采纳 参考技术B ibatis的包:ibatis-sqlmap.jar ibatis需要log4j支持: log4j.jar spring内置的ibatis支持还需要aspect的包 根据数据库的不同还需要数据库驱动包 数据库配链接池可能还需要c3p0 参考技术C <!-- https://mvnrepository.com/artifact/org.apache.ibatis/ibatis-core --><dependency>
<groupId>org.apache.ibatis</groupId>
<artifactId>ibatis-core</artifactId>
<version>3.0</version>
</dependency> 参考技术D ibatis是mybatis的前身,你是不是mybatis包没加
以上是关于请问ibatis的sqlMap配置文件 $value 和 #id 啥区别?的主要内容,如果未能解决你的问题,请参考以下文章
在ibatis及mybatis的sqlmap配置文件中应使用啥符号进行安全预编译参数绑定