gate_s

  博客园 :: 首页 :: 博问 :: 闪存 :: 新随笔 :: 联系 :: 订阅 订阅 :: 管理 ::

ibatis中使用select top #num# * from tableName出现错误。由于初次用ibatis还不知道在它里边拼写SQL语句的一些规则,导致一些自认为很平常的SQL语句,在它这里翻了船。

select top #number#这种写法是不正确的,原因待查。正确的书写方式是 select top $number$ 。

下面这段话是在网络里找到的它也没给出具体的解释,只是说这是什么SQL的动态写法,不明所以。

在iBATIS中,对于top参数,只能用动态SQL方式。如 <select id="getClassLatest" parameterClass="map" resultMap="musicItemMap">    SELECT top $number$ * FROM tbl_music_item where class_id=#classId# order by add_time desc </select>

#与$的区别

 

昨天一个项目中在写ibatis中的sql语句时,order by #field#, 运行时总是报错,后来上网查了查,才知道这里不该用#,而应该用$,随即查了下#与$的区别. 总结如下: 1.#是把传入的数据当作字符串,如#field#传入的是id,则sql语句生成是这样,order by "id",这当然会报错..
2.$传入的数据直接生成在sql里,如#field#传入的是id,则sql语句生成是这样,order by id, 这就对了.
3.#方式能够很大程度防止sql注入.
4.$方式无法方式sql注入.
5.$方式一般用于传入数据库对象.例如传入表名.
6.一般能用#的就别用$.
就这么多了.
posted on 2013-08-20 13:11  gate_s  阅读(398)  评论(0编辑  收藏  举报