或者这样写:
  <select id="getTableCount" resultClass="java.lang.Integer" parameterClass="table">
    <![CDATA[
    select count(*) from $tablename$
    ]]>
  </select>table是一个bean,里面要有tablename这个属性

解决方案 »

  1.   

    如果我在sqlMapConfig中进行如下配置的话<?xml version="1.0" encoding="UTF-8"?>
    <!DOCTYPE sqlMapConfig PUBLIC "-//iBATIS.com//DTD SQL Map Config 2.0//EN"
        "http://www.ibatis.com/dtd/sql-map-config-2.dtd"><sqlMapConfig><settingslazyLoadingEnabled="false"cacheModelsEnabled="false"enhancementEnabled="false"maxRequests="512" maxSessions="128" maxTransactions="32"/>
    <sqlMap resource="com/ylkj/orm/wfNode.xml"/></sqlMapConfig>执行
    queryForList(statementName, parameterObject,
                                rows.getFirstRow(), rows.getMaxRows());是否只是一次取出当前的记录而不是取出所有的记录
      

  2.   

    其实在xml文件里写比写在.java文件里好多了。
      

  3.   

    用模版技术去生成sqlMap。然后写JAVA基类在分页时自动调用。
      

  4.   

    个人觉得“queryForList(statementName, parameterObject,
    rows.getFirstRow(), rows.getMaxRows());”是一个假的分段取记录方法,如果sql里面是"select * from nnn"可能就是全部记录都取出来,然后再读取全部记录中的一部分记录。不过没有测试过:)
      

  5.   

    to topirol(我爱学习) 
    我们以前测试过,很慢。
      

  6.   

    不过可以优化sql代码,分段取出。比如mysql可以用select * from limit start,end之类的SQL语句。
      

  7.   

    自动生成JAVA+strust和.Net代码.
    自动生成MS SQL2000 Server存储过程.
    http://60.191.0.85/cx/download/Java_AutoCode.rar
      

  8.   

    queryForList(statementName, parameterObject,
    rows.getFirstRow(), rows.getMaxRows());得有数据库支持才行吧,比如SYBASE不支持那么无论怎样都得一次全取出来的。
    ORACLE支持。
      

  9.   

    不会吧,SYBASE不能分段取出的吗?不可能吧,那如果数据很多的话不是完蛋了?不相信,我觉得应该都会有类似的方法的
      

  10.   

    去看看JDBC啊,无论hibernate也好,ibaties也好,底层调用的都是JDBC啊,JDBC默认一次缓冲的记录好像是15条吧。select * 是不会把说有记录都加载到内存中的。