当前位置: 首页 > 面试题库 >

是否有一种可移植的方式来具有“从T上选出ELECT FIRST 10 *”的语义?

景修杰
2023-03-14
问题内容

我想从数据库中读取数据,例如说1万条记录。

我在Wikipedia上找到了“结果限制”,而且很明显,这不能以可移植的方式使用sql来完成。

另一种方法是JdbcTemplate,它提供了许多查询方法,但是我如何确定已读取足够的行。通过诸如RowMapper和ResultSetExtractor之类的回调,无法表明已经读取了足够的数据。


问题答案:

抓住Hibernate或JPA。两者都熟悉各种数据库方言,并且将透明地处理令人讨厌的DB细节。

在Hibernate中,您可以使用Criteria#setFirstResult()和进行分页Criteria#setMaxResults()。例如

List users = session.createCriteria(User.class)
    .addOrder(Order.asc("id"))
    .setFirstResult(0) // Index of first row to be retrieved.
    .setMaxResults(10) // Amount of rows to be retrieved.
    .list();

在JPA中,您可以使用Query#setFirstResult()和进行类似操作Query#setMaxResults()

List users = em.createQuery("SELECT u FROM User u ORDER BY u.id");
    .setFirstResult(0) // Index of first row to be retrieved.
    .setMaxResults(10) // Amount of rows to be retrieved.
    .getResultList();


 类似资料:
  • 是PHP的可移植咨询文件锁定功能。他们明确宣传它甚至可以在windows下工作: Flock()允许您执行一个简单的读/写模型,几乎可以在所有平台上使用(包括大多数Unix衍生产品,甚至Windows)。 我想把一个也可移植的超时阻塞(和没有忙碌的等待工作周围的选项)。在UNIX中,这可以简单地通过设置一个警报来实现,该警报将发送一个: 是否有一种可移植的方法可以在阻塞上设置超时?如果有,如何?

  • 问题内容: 我正在尝试将长度不定的多个数据列表输出到CSV文件。每个列表应该是输出CSV文件中的一列。有直接的做事方法吗?如果我将每个列表输出为一行,那么我将遍历每个列表并在结束时输出返回值,但是这种方法在按列工作时不起作用。 我曾想过一次逐项检查所有列表并增加一个计数器,但这也会失败,因为有些列表比另一些​​更长。为了解决这个问题,我将不得不在每次迭代时检查计数器是否在每个列表的末尾,这在计算方

  • 问题内容: 有没有一种可移植的方式来获取Python中当前用户的用户名(即,至少在和下都可以使用)。它会像这样工作: 我四处搜寻,很惊讶地没有找到一个明确的答案(尽管也许我只是在谷歌搜索方面很差)。该PWD模块提供了一个相对简单的方法来实现这一目标下,说,Linux的,但它不存在于Windows。一些搜索结果表明,在某些情况下(例如,作为Windows服务运行),在Windows下获取用户名可能很

  • 有没有Angular2的方法可以做到这一点,或者我只是使用老式的JavaScript?

  • 以前的尝试是让Netbean将EJB模块部署到Netbean可以访问的Glassfish服务器上,该模块以JAR而不是EAR的形式构建。但是,通过CLI使用将该JAR部署到Glassfish可能会遇到错误。 EAR通过CLI部署时没有问题--但是,EJB的JNDI名称似乎不起作用。差异是什么? 32.4.1.1可移植JNDI语法 三个JNDI名称空间用于可移植JNDI查找:java:global、

  • 我有一个包含2列(均为整数)的表,主键由这两列组成。我的应用程序不会在此表上执行UPDATE语句,我正在使用PostgreSQL。 但是我的应用程序通过预先使用特定的表信息为所有的表创建INSERT、DELETE和UPDATE预准备语句。对于这个特定的表,UPDATE语句的WHERE子句包含这两列,但是SET子句为空,这将导致错误。 有没有一种特殊形式的UPDATE语句,除了检查有效SQL之外什么