- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
最近我在Junit上工作,用hsqldb(2.3.3)测试Dao相关的代码。系统使用mybatis做数据持久化。
在 mybatisXXsql.xml 中,select 语句中有“fetchSize”属性,例如:
<select ... resultSetType="FORWARD_ONLY" fetchSize="-2147483648">
...
</select>
当我们用hsqldb调用测试sql时,出现如下异常:
Caused by: java.sql.SQLException: Invalid argument in JDBC call
at org.hsqldb.jdbc.JDBCUtil.sqlException(Unknown Source)
at org.hsqldb.jdbc.JDBCUtil.sqlException(Unknown Source)
at org.hsqldb.jdbc.JDBCUtil.sqlException(Unknown Source)
at org.hsqldb.jdbc.JDBCUtil.outOfRangeArgument(Unknown Source)
at org.hsqldb.jdbc.JDBCPreparedStatement.setFetchSize(Unknown Source)
我检查过它似乎不支持内存数据库中的“fetchSize”,谁能给我一些建议,我该如何测试这个 sql 部分?
最佳答案
负fetchSize
是not supported通过 JDBC。以下是 setFetchSize
抛出的异常的描述:
SQLException - if a database access error occurs, this method is called on a closed Statement or the condition rows >= 0 is not satisfied.
错误的原因是获取大小不正确(堆栈跟踪中的outOfRangeArgument
也表明了这一点)。
mysql 驱动程序确实支持 Integer.MIN_INT
作为获取大小以指定结果集处于流模式:
The combination of a forward-only, read-only result set, with a fetch size of Integer.MIN_VALUE serves as a signal to the driver to stream result sets row-by-row. After this, any result sets created with the statement will be retrieved row-by-row.
mybatis 本身不允许在 mapper 配置中参数化 fetchSize
。
您需要使用一些技术来通过 AspectJ
或 PowerMock
覆盖配置。使用 PowerMock
,您可以在调用执行查询的方法之前使用 PowerMock.stub
执行类似的操作:
PowerMock.stub(
PowerMock.method(
org.apache.ibatis.mapping.MappedStatement.class,
"getFetchSize"
)
).toReturn(1);
这样,当 mybatis 将创建一个 Statement
时,它将为 fetchSize
使用模拟值
关于mysql - 如何在内存数据库中设置 fetchSize?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53114053/
最近我在Junit上工作,用hsqldb(2.3.3)测试Dao相关的代码。系统使用mybatis做数据持久化。 在 mybatisXXsql.xml 中,select 语句中有“fetchSize”
按照书中的示例,我正在使用 setFetchSize() 查询表。书中提到重置 setAutoCommit() 和 setFetchSize()(书中没有关闭 statement 和 connecti
我们希望动态设置特定查询的 fetchSize,以便可以根据打开的线程总数等先决条件在运行时传递大小值。 目前我们使用的是 MyBatis 3.4 库。 下面是我们在应用程序中使用的查询的快照。
r2dbc-oracle 似乎没有适当的背压实现。如果我选择更大的行数(比如 10k),那么它比常规的 jdbc/JPA 查询慢得多。如果我手动将 fetchsize 设置为 1000,那么查询速度大
我一直在使用 JPA 2.0 和 hibernate 作为我的 Web 应用程序的供应商。对于其中一个数据库查询,我使用 JPA criteria builder API 来构造动态查询。我已经能够让
我必须查询一个数据库,结果集非常大。我正在使用 MySQL 作为数据库。为了在大量搜索后避免“OutOfMemoryError”,我有两个选择:一个使用 LIMIT(特定于数据库),另一个使用 jdb
我相信我已经成功地实现了一个 Cassandra Java 集成解决方案,在那里我按照获取大小指定的块,以块的形式获取所有表,如这里 https://docs.datastax.com/en/deve
我目前有一个应用程序,它应该连接到不同类型的数据库,使用 Spark 的 JDBC 选项在该数据库上运行特定查询,然后将生成的 DataFrame 写入 HDFS。 Oracle 的性能非常糟糕(没有
我这里遇到一个特别棘手的情况。我支持在 JBoss 上运行的基于 java 的打包 Web 应用程序。该应用程序是一个打包的应用程序,因此我实际上无法访问任何代码,也不知道代码是如何开发的。 我试图找
我在 Java 中使用 iBatis 作为 ORM 框架。我有一个选择语句 SELECT * FROM SOME_TABLE 我正在使用 queryForList 方法: List
我正在使用 MySQL 并想利用 setFetchSize 属性。默认的 MySQL JDBC 实现并不真正尊重它。如果将 fetchsize 设置为 Integer.MIN_VALUE 它将单独获取
我有一个计划工作从文件夹中获取最近的电子邮件并将这些电子邮件写入文件(.eml 文件)。但是需要很长时间(阅读 9mb 大小的电子邮件需要 5 到 6 分钟)才能完成。因为我使用的是 JavaMail
我有一个 oracle(10.2) PLSQL 过程,它从 sysrefcursor 中的表中获取 15 条记录。然后我将此游标作为结果集传递给 java 类。这个java类被加载到oracle中。
我使用的版本是:datastax java driver 2.0.1 & 2.0.2 cassandra version : [cqlsh 4.1.0 | Cassandra 2.0.4 | CQL
我正在尝试使用 RJDBC 将数据从 Athena DB 提取到 R 中如 AWS's own blog 上的详细描述.唉,我试图提取的数据量很大,所以我收到以下错误消息: Error in .jca
我正在开发一个 Spring-MVC 应用程序,其中有一个使用 Criteria 编写的搜索函数。对于分页搜索,我从前端获取firstResult 和fetchSize 作为参数。不幸的是,当只要求
互联网上有很多关于使用 JDBC 分页/对巨大结果集进行迭代的不同教程。所以,基本上到目前为止我发现了很多方法: Vendor specific sql 可滚动结果集 (?) 将纯结果集保存在内存中,
Spring Batch 中的属性“FetchSize”和“PageSize”有什么区别?PageSize 是一次检索的行数?FetchSize 是数据库调用的数量? 如果我的查询返回 10000 行
我在使用 Cassandra node.js 驱动程序时遇到了一个奇怪的问题。当我尝试从某些分区选择数据时,出现此错误。 Error: There was an problem while parsi
我已使用 PyCharm Pro 版本连接到 AWS Athena。它连接成功,但每当我运行查询时,我都会得到: The requested fetchSize is more than the al
我是一名优秀的程序员,十分优秀!