如何为 iBatis select 语句设置 fetchSize
我使用 iBatis 作为 Java 中的 ORM 框架。 我有一个 select 语句
<select id="getList" resultMap="correctMap">
SELECT *
FROM SOME_TABLE
</select>
,我正在使用 queryForList 方法:
List<MappedObject> list = getSqlMapClientTemplate().queryForList("getList");
但它检索大量数据,并且该查询的性能非常慢。
我对这个问题的假设是 iBatis 有默认的获取大小(例如在 JDBS 中是 10),所以这就是它如此慢的原因。所以我想设置更大的获取大小(例如1000)。我怎样才能这样做呢?
还是我看错了方向?
注意:我需要所有数据,因此在 queryForList
方法中设置最大结果对我来说不是合适的解决方案。
List queryForList(String id,
Object parameterObject,
int skip,
int max)
I'm using iBatis as ORM framework in Java.
I have a select statement
<select id="getList" resultMap="correctMap">
SELECT *
FROM SOME_TABLE
</select>
And I'm using queryForList method:
List<MappedObject> list = getSqlMapClientTemplate().queryForList("getList");
But it retrieves a big amount of data and performance of this query is pretty slow.
My assumption about this issues that iBatis has default fetch size (e.g. like in JDBS is 10) so that is why it so slow. So I want to set bigger fetch size (1000 for example). How I can do so?
Or am I looking in a wrong way?
NOTE: I need all data so set max results in queryForList
method is not a appropriate solution for me.
List queryForList(String id,
Object parameterObject,
int skip,
int max)
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
是的,您可以将 fetchSize 设置为更高级别,而不必担心对每个选择进行操作。
步骤1
创建文件mybatis-config.xml
您可以添加mybatis支持的任何值
http://www.mybatis.org/mybatis-3/configuration.html
步骤 2
将其作为资源加载到您的配置文件中。这是 Spring 4 示例
步骤 3:传递给您 SqlSessionFactoryBean
注意:我使用 myBatis 3.3.0 执行此操作。它不适用于 myBatis 3.4.4(存在开放缺陷)
这将确保所有 select 语句都分配有 fetchSize 属性。
Yes you can set fetchSize at a higher level and need not worry about doing for every select.
Step 1
Create a file mybatis-config.xml
You can add any value supported in mybatis
http://www.mybatis.org/mybatis-3/configuration.html
Step 2
Load this as a resource in your Config file. This is Spring 4 example
Step 3 : Pass to you SqlSessionFactoryBean
Note: I did this with myBatis 3.3.0. It does not work with myBatis 3.4.4(there is open defect)
This will ensure that all select statements have a fetchSize property assigned to them.