mybatis.xml文件中#与$符号的区别以及数学符号的处理
2017-08-18 11:04
375 查看
转载:
http://www.cnblogs.com/zhxn/p/6986744.html
#{}表示一个占位符号,通过#{}可以实现preparedStatement向占位符中设置值,自动进行java类型和jdbc类型转换,#{}可以有效防止sql注入。 #{}可以接收简单类型值或pojo属性值。 如果parameterType传输单个简单类型值,#{}括号中可以是value或其它名称。
使用#传入参数是,sql语句解析是会加上”“,比如
传入的name为小李,那么最后打印出来的就是
就是会当成字符串来解析,这样相比于$的好处是比较明显对的吧,#{}传参能防止sql注入,如果你传入的参数为 单引号‘,那么如果使用${},这种方式 那么是会报错的。
另外一种场景是,如果你要做动态的排序,比如 order by column,这个时候务必要用${},因为如果你使用了#{},那么打印出来的将会是
这样是没用。
即:能用#就最好不用$.
2.如果在mapper.xml里使用>,<,>=,<=等能破坏xml格式的符号,会引起
mybaits无法正常解析xml文件。
解决方法:
http://www.cnblogs.com/zhxn/p/6986744.html
#{}表示一个占位符号,通过#{}可以实现preparedStatement向占位符中设置值,自动进行java类型和jdbc类型转换,#{}可以有效防止sql注入。 #{}可以接收简单类型值或pojo属性值。 如果parameterType传输单个简单类型值,#{}括号中可以是value或其它名称。
使用#传入参数是,sql语句解析是会加上”“,比如
select * from table where name = #{name}
传入的name为小李,那么最后打印出来的就是
select * from table where name = ‘小李’
就是会当成字符串来解析,这样相比于$的好处是比较明显对的吧,#{}传参能防止sql注入,如果你传入的参数为 单引号‘,那么如果使用${},这种方式 那么是会报错的。
另外一种场景是,如果你要做动态的排序,比如 order by column,这个时候务必要用${},因为如果你使用了#{},那么打印出来的将会是
select * from table order by ‘name‘
这样是没用。
即:能用#就最好不用$.
2.如果在mapper.xml里使用>,<,>=,<=等能破坏xml格式的符号,会引起
mybaits无法正常解析xml文件。
解决方法:
<select id="test" resultType="java.lang.Integer"> <![CDATA[ select 1<2 ]]> </select>
相关文章推荐
- mybatis.xml文件中#与$符号的区别以及数学符号的处理
- mybatis的xml文件中数据传输符号#和$的区别
- mybatis在mapper.xml文件中的大于小于等符号处理
- xml配置文件不能被正确解析的特殊符号的处理方法
- mybatis配置文件resultType和resultMap的区别以及mybatis自带的别名
- (转载)Android xml资源文件中@、@android:type、@*、?、@+引用写法含义以及区别
- mybatis 多对一,xml 文件的处理 学习总结
- Mybatis中mapper.xml文件update、delete以及insert返回值问题
- string.xml文件中整型和string型代替以及特殊转义符处理
- 在drawable下的xml文件中layer-list的用二:在layer-list下的item标签中使用shape画图,以及backgroun和src的区别
- mybatis中的mapper.xml文件中#,$的区别
- mybatis xml文件中大于小于符号解释
- mybatis的xml文件中如何处理大小于号
- Android xml资源文件中@、@android:type、@*、?、@+引用写法含义以及区别
- MyBatis Mapper.xml文件中 $和#的区别
- Json和Xml的区别,以及它们的底层是如何处理的
- mybatis mapper.xml文件中$和#的使用区别
- MyBatis框架的学习(四)——Mapper.xml文件中的输入和输出映射以及动态sql
- 关于mybatis中config.xml以及mapper.xml文件无法补全问题
- (转)MyBatis框架的学习(四)——Mapper.xml文件中的输入和输出映射以及动态sql