如何为iBatis select语句设置fetchSize
我在Java中使用iBatis作为ORM框架。 我有一个选择声明
SELECT * FROM SOME_TABLE
我正在使用queryForList方法:
List list = getSqlMapClientTemplate().queryForList("getList");
但是它检索了大量数据,并且此查询的性能非常慢。
我对这个问题的假设是iBatis具有默认的提取大小(例如在JDBS中是10),所以这就是它如此慢的原因。 所以我想设置更大的提取大小(例如1000)。 我怎么能这样做?
还是我看错了?
注意:我需要所有数据,因此在queryForList
方法中设置最大结果对我来说不是一个合适的解决方案。
List queryForList(String id, Object parameterObject, int skip, int max)
是的,你可以在更高的级别设置fetchSize,而不必担心每次选择都做。
步骤1
创建一个文件mybatis-config.xml
您可以添加mybatis http://www.mybatis.org/mybatis-3/configuration.html中支持的任何值
第2步
将其作为资源加载到Config文件中。 这是Spring 4的例子
@Value("classpath:mybatis-config.xml") private Resource myBatisResource ;
第3步:传递给您SqlSessionFactoryBean
sessionFactory.setConfigLocation(myBatisResource);
注意:我使用myBatis 3.3.0执行此操作。 它不适用于myBatis 3.4.4(有开放缺陷)
这将确保所有select语句都具有分配给它们的fetchSize属性。