zoukankan      html  css  js  c++  java
  • 【转】ibatis 中使用select top #pagesize# * from tablename

    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.一般能用#的就别用$.

    就这么多了.
  • 相关阅读:
    java-正则表达式6
    java-正则表达式5
    java-正则表达式4
    java-正则表达式3
    java-正则表达式2
    12.5
    JAVA GUI随笔
    JAVA个人知识总结
    UML关系图
    JAVA中的聚集和组合的区别和联系
  • 原文地址:https://www.cnblogs.com/summer_adai/p/2242985.html
Copyright © 2011-2022 走看看