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.一般能用#的就别用$.
    就这么多了.
  • 相关阅读:
    Paths on a Grid
    Three Kingdoms(优先队列+bfs)
    Factstone Benchmark(数学)
    C. Searching for Graph(cf)
    B. Trees in a Row(cf)
    String Successor(模拟)
    乘积最大的分解(数学)
    Kindergarten Election
    In 7-bit
    Friends
  • 原文地址:https://www.cnblogs.com/gates/p/3269987.html
Copyright © 2011-2022 走看看