求组 有什么好的方法

解决方案 »

  1.   

    直接写不行么?select top 5 * from tb where ...
      

  2.   

    直接写是可以的
    <select id="findPaginated" parameterType="map" resultType="Channel">
    select top $pagesize$ * from t_channel 
    where id not in(select top $offset$ id from t_channel)
    <!-- limit #{offset},#{pagesize} -->
    </select>
    params.put("offset", String.valueOf(SystemContext.getOffset()));
    params.put("pagesize", String.valueOf(SystemContext.getPagesize()));

    datas = session.selectList(sqlId, params)
    总是报下面的错
    DEBUG [http-8081-Processor60]                   java.sql.Connection     - ooo Connection Opened
    DEBUG [http-8081-Processor60]            java.sql.PreparedStatement     - ==>  Executing: select top $pagesize$ * from t_channel where id not in(select top $offset$ id from t_channel) 
    DEBUG [http-8081-Processor60]            java.sql.PreparedStatement     - ==> Parameters: 
    org.apache.ibatis.exceptions.PersistenceException: 
    ### Error querying database.  Cause: com.microsoft.sqlserver.jdbc.SQLServerException: '$pagesize$' 附近有语法错误。
    ### The error may involve cn.com.leadfar.cms.backend.model.Channel.findPaginated-Inline
    ### The error occurred while setting parameters
    ### Cause: com.microsoft.sqlserver.jdbc.SQLServerException: '$pagesize$' 附近有语法错误。
    at org.apache.ibatis.exceptions.ExceptionFactory.wrapException(ExceptionFactory.java:8)
    at org.apache.ibatis.session.defaults.DefaultSqlSession.selectList(DefaultSqlSession.java:61)
    at org.apache.ibatis.session.defaults.DefaultSqlSession.selectList(DefaultSqlSession.java:53)
    at cn.com.leadfar.cms.backend.dao.impl.BaseDao.findPaginated(BaseDao.java:118)
    at cn.com.leadfar.cms.backend.dao.impl.ChannelDaoForMyBatisImpl.findChannels(ChannelDaoForMyBatisImpl.java:28)
    at cn.com.leadfar.cms.site.NavServlet.navList(NavServlet.java:46)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorI
      

  3.   

    你那段select是哪里的?配置文件?那样是不行的,在java中直接定义一个方法来获取,感觉像是在分页啊!
    String sql = 'select top ' +第一个变量+' id,name from tb where id not in (select top '+第二个变量+' id from tb)'执行。
      

  4.   

    $pagesize$是不是应该写成#pagesize#
      

  5.   

    '$pagesize$' 附近有语法错误。  你写法有误的。应该是#pagesize
      

  6.   

    http://www.blogjava.net/cannysquirrel/archive/2010/11/26/339146.html楼主可以看看这个 ,这个有#和$的区别,一个是map传值,一个是拼接
      

  7.   

    你用的是Mysql还是Oracle呢,oracle用top ,mysql用limit
      

  8.   


    oracle用的是rownum吧 sql server用的才是top