iis服务器助手广告广告
返回顶部
首页 > 资讯 > 精选 >jdbc和mybatis的流式查询怎么用
  • 434
分享到

jdbc和mybatis的流式查询怎么用

2023-06-25 11:06:58 434人浏览 薄情痞子
摘要

这篇文章将为大家详细讲解有关jdbc和mybatis的流式查询怎么用,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。jdbc流式查询:jdbc的流式查询需要在生成PreparedStatement的时候设置

这篇文章将为大家详细讲解有关jdbc和mybatis的流式查询怎么用,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。

jdbc流式查询:

jdbc的流式查询需要在生成PreparedStatement的时候设置三个参数。如下:

PreparedStatement stmt = jdbcTemplate.getDataSource().getConnection().prepareStatement(sql, ResultSet.TYPE_FORWARD_ONLY, ResultSet.CONCUR_READ_ONLY);stmt.setFetchSize(Integer.MIN_VALUE);

主要使用到的是java.sql.Connection的prepareStatement方法。

PreparedStatement prepareStatement(String sql, int resultSetType, int resultSetConcurrency) throws SQLException;

resultSetType和resultSetConcurrency我们要分别设置为ResultSet.TYPE_FORWARD_ONLY, ResultSet.CONCUR_READ_ONLY。

还有就是fetchSize设置为Integer.MIN_VALUE,一开始比较疑惑为啥是这个值。后来发现代码里面对这个值其实是有特殊处理的。

这个是com.mysql.cj.jdbc.StatementImpl的setFetchSize方法。

@Override   public void setFetchSize(int rows) throws SQLException {       synchronized (checkClosed().getConnectionMutex()) {           if (((rows < 0) && (rows != Integer.MIN_VALUE)) || ((this.maxRows > 0) && (rows > this.getMaxRows()))) {               throw SQLError.createSQLException(Messages.getString("Statement.7"), MysqlErrorNumbers.SQL_STATE_ILLcom.mysql.cj.jdbc.StatementImpl的方法EGAL_ARGUMENT, getExceptionInterceptor());           }           this.query.setResultFetchSize(rows);       }   }

resultSetType,有以下三种

    int TYPE_FORWARD_ONLY = 1003;        int TYPE_SCROLL_INSENSITIVE = 1004;        int TYPE_SCROLL_SENSITIVE = 1005;
stmt = conn.prepareStatement(sql, ResultSet.TYPE_FORWARD_ONLY, ResultSet.CONCUR_READ_ONLY);stmt.setFetchSize(Integer.MIN_VALUE);

resultSetConcurrency有以下两种,流式查询要设置为只读的,数据不会被更新。

    int CONCUR_READ_ONLY = 1007;        int CONCUR_UPDATABLE = 1008;

mybatis流式查询:

mapper中的代码:

@Select("select * from xxx order by xx desc")@Options(resultSetType = ResultSetType.FORWARD_ONLY, fetchSize = Integer.MIN_VALUE)@ResultType(XxxObject.class)void queryStreamResult(ResultHandler<XxxObject> handler);

在查询方法上加入注解@Options和@ResultType。设置参数不用多说和上面jdbc的底层是一样的,参数值也一样。

只不过设置了@ResultType告诉程序应该要返回什么类型的对象。还有这个ResultHandler其实就是Consumer的函数式接口用来处理每一条返回的数据。

具体方法中的代码:

@Override   public Boolean dealDataList() {       mapper.queryStreamResult(resultContext -> {           dealSingleData(resultContext.getResultObject().getUid());       });       return true;   }

这里怎么使用每一条返回的数据只要在resultContext使用ResultObject就可以拿到上面mapper设置的XxxObject对象进行操作了。

关于“jdbc和mybatis的流式查询怎么用”这篇文章就分享到这里了,希望以上内容可以对大家有一定的帮助,使各位可以学到更多知识,如果觉得文章不错,请把它分享出去让更多的人看到。

--结束END--

本文标题: jdbc和mybatis的流式查询怎么用

本文链接: https://www.lsjlt.com/news/304552.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • jdbc和mybatis的流式查询怎么用
    这篇文章将为大家详细讲解有关jdbc和mybatis的流式查询怎么用,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。jdbc流式查询:jdbc的流式查询需要在生成PreparedStatement的时候设置...
    99+
    2023-06-25
  • jdbc和mybatis的流式查询使用方法
    目录导语: jdbc流式查询: mybatis流式查询: 导语: 有些时候我们所需要查询的数据量比较大,但是jvm内存又是有限制的,数据量过大会导致内存溢出。这个时候就可以使用流式...
    99+
    2022-11-12
  • MyBatis流式查询的示例分析
    这篇文章主要介绍MyBatis流式查询的示例分析,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!导读:流式查询指的是查询成功后不是返回一个集合而是返回一个迭代器,应用每次从迭代器取一条查询结果。流式查询的好处是能够降低...
    99+
    2023-06-15
  • mysql JDBC的三种查询(普通、流式、游标)
    使用JDBC向mysql发送查询时,有三种方式: 常规查询:JDBC驱动会阻塞的一次性读取全部查询的数据到 JVM 内存中,或者分页读取流式查询:每次执行rs.next时会判断数据是否需要从mysql服务器获取,如果需要触发读取一批数据(可...
    99+
    2023-09-14
    mysql jvm java
  • MyBatis流式查询的三种实现方法
    导读:流式查询指的是查询成功后不是返回一个集合而是返回一个迭代器,应用每次从迭代器取一条查询结果。流式查询的好处是能够降低内存使用 如果没有流式查询,我们想要从数据库取 1000 万...
    99+
    2022-11-12
  • springboot-mybatis/JPA流式查询的多种实现方式
    目录第一种方式: springboot + mybatis 流式查询(网上说的有三种,我觉得下面这种最简单,对业务代码侵入性最小)第二种方式:springboot+JPA 流式查询第...
    99+
    2022-12-19
    springboot-mybatis JPA流式查询 springboot-mybatis流式查询
  • MySQL 普通查询、流式查询、游标查询以及使用 mybatis 如何实现
    MySQL 普通查询、流式查询、游标查询以及使用 mybatis 如何实现 MySQL 普通查询、流式查询、游标查询以及使用 mybatis 如何实现普通查询流式查询游标查询mybatis 如...
    99+
    2023-09-28
    mybatis java mysql
  • MySQL中流式查询及游标查询的方式是什么
    这篇文章主要讲解了“MySQL中流式查询及游标查询的方式是什么”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“MySQL中流式查询及游标查询的方式是什么”吧!...
    99+
    2022-10-19
  • MyBatis中怎么实现一对多查询和多对一查询
    这篇“MyBatis中怎么实现一对多查询和多对一查询”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇“MyBatis中怎么实现一...
    99+
    2023-06-29
  • TK-MyBatis分页查询怎么使用
    本篇内容介绍了“TK-MyBatis分页查询怎么使用”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!记 tkMybatis 查询出一个 &nb...
    99+
    2023-06-21
  • Mybatis怎么用注解写in查询
    这篇文章主要为大家展示了“Mybatis怎么用注解写in查询”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“Mybatis怎么用注解写in查询”这篇文章吧。Mybatis注解写in查询@Selec...
    99+
    2023-06-20
  • 使用mybatis格式化查询出的日期
    mybatis格式化查询出的日期 1、格式符说明 %Y:年 示例:2019 %m:月 示例:08 %d:日 示例:05 %H:时 示例:15 %I:分 示例:47 %S:秒 示例:5...
    99+
    2022-11-12
  • Mybatis-plus的分页查询操作怎么使用
    这篇“Mybatis-plus的分页查询操作怎么使用”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇“Mybatis-plus的...
    99+
    2023-07-02
  • 使用MyBatis怎么对缓存进行查询
    使用MyBatis怎么对缓存进行查询?很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。一、一级查询缓存MyBatis一级缓存是基于org.apache.ibatis...
    99+
    2023-05-31
    mybatis
  • 模糊查询怎么使用mybatis来实现
    模糊查询怎么使用mybatis来实现?针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。mybatis中分页有3种方式来实现,通过sql语句(两种传参方式)来实现,通过mybat...
    99+
    2023-05-31
    mybatis 模糊查询
  • MyBatis多表操作查询功能怎么用
    小编给大家分享一下MyBatis多表操作查询功能怎么用,希望大家阅读完这篇文章之后都有所收获,下面让我们一起去探讨吧!一对一查询用户表和订单表的关系为,一个用户多个订单,一个订单只从属一个用户一对一查询的需求:查询一个订单,与此同时查询出该...
    99+
    2023-06-25
  • 如何使用mybatis格式化查询出的日期
    小编给大家分享一下如何使用mybatis格式化查询出的日期,希望大家阅读完这篇文章之后都有所收获,下面让我们一起去探讨吧!mybatis格式化查询出的日期1、格式符说明%Y:年 示例:2019%m:月 示例:08%d:日 示例:05%H:时...
    99+
    2023-06-20
  • Mybatis的collection三层嵌套查询怎么写
    这篇“Mybatis的collection三层嵌套查询怎么写”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇“Mybatis的c...
    99+
    2023-07-05
  • 在MyBatis中实现一对多查询和多对一查询的方式详解(各两种方式)
    目录1、多对一1、1环境搭建1、2编写实体类、1、3编写接口方法1、4编写Mapper1、5实现1、6运行结果2、一对多2、1环境搭建和一对多一样2、2编写实体类2、3编写接口的方法...
    99+
    2022-11-13
  • Mybatis Plus使用queryWrapper怎么实现复杂查询
    这篇文章主要讲解了“Mybatis Plus使用queryWrapper怎么实现复杂查询”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“Mybatis Plus使用queryWrapper怎么...
    99+
    2023-06-26
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作