昨天一个项目中在写ibatis中的sql语句时,order by #field#, 运行时总是报错,后来上网查了查,才知道这里不该用#,而应该用$,随即查了下#与$的区别.
总结如下:
1.#是把传入的数据当作字符串,如#field#传入的是id,则sql语句生成是这样,order by "id",这当然会报错..
2.$传入的数据直接生成在sql里,如$field$传入的是id,则sql语句生成是这样,order by id, 这就对了. 如:
<isNotNull property="orderBy"><![CDATA[ order by $orderBy$ ]]>
<isNotNull property="descOrAsc">
<![CDATA[ $descOrAsc$ ]]>
</isNotNull>
</isNotNull>
3.#方式能够很大程度防止sql注入.
4.$方式无法方式sql注入.
5.$方式一般用于传入数据库对象.例如传入表名.
6.一般能用#的就别用$.
分享到:
相关推荐
ibatis中输入输出各种类型的参数分析及#与$区别
ibatis中 $ 于 # 的 区别 ibatis中 $ 于 # 的 区别
ibatis sql语句对条件中特殊字符% # 处理
操作数据库 iBATIS查询,java 和spring的配置方法
选用ibatis和hibernate的区别选用ibatis和hibernate的区别选用ibatis和hibernate的区别
iBatis和Hibernate的区别
ibatis学习 ibatis总结 ibatis ibatis ibatis
虽然ibatai sql map可以配置多个参数,但sqlMap只能传入一个参数,我们有两种方式,一是把我们的参数封装成一个类,通过set/get取值的方式给sql map注入参数,二是通过hashMap(可以组合一些不是同一个pojo的参数有...
mybatis和ibatis总体来讲都差不多的。下面小编给大家探讨下mybatis中#{}和${}的区别,感兴趣的朋友一起学习吧
在里面总结了ibatis和mybatis的主要区别,包括xml文件等
ibatis资料ibatis资料ibatis资料ibatis资料ibatis资料ibatis资料ibatis资料ibatis资料ibatis资料
自己总结的myBatis和ibatis的区别
iBatis和Spring整合 iBatis和Spring整合
ibatis demo,ibatis例子,ibatis示例
iBATIS 级联iBATIS 级联iBATIS 级联
该问题对初学者很有提示性帮助,里面主要是个人对ibatis的##的认识
ibatis的原码 ibatis源码 ibatis源码 ibatis源码
ibatas的sql语句需要自己手动写,而hibernate能够在程序运行时自动生成。但是不要就这样以为hibernate比ibatas方便,其实二者熟悉之后的效率差不多。而hibernate还能够自动建表等等,这样的好处就在于你带着这个程序...
ibatis
其中包含iBatis精讲PDF iBatis实例 iBatis开发指南 iBatis分页 spring+iBatis处理1对多数据表实例等等若干帮助文档。希望可以帮助大家学习iBatis...