当前位置: 首页 > news >正文

人工智能写作网站大学生可以做的网站项目

人工智能写作网站,大学生可以做的网站项目,滨州北京网站建设价格,菜鸟教程网站是怎么做的1、流式查询简介 流式处理在大数据方面应用比较广泛。随着数据的爆发式增长#xff0c;流式处理的方式也被应用到日常的工具中#xff0c;如JDK的对于集合处理的Stream流、Redis5.0新增的数据结构Stream专门来处理消息等。 流式查询指的是查询成功后不是返回一个集合而是返回…1、流式查询简介 流式处理在大数据方面应用比较广泛。随着数据的爆发式增长流式处理的方式也被应用到日常的工具中如JDK的对于集合处理的Stream流、Redis5.0新增的数据结构Stream专门来处理消息等。 流式查询指的是查询成功后不是返回一个集合而是返回一个迭代器应用每次从迭代器取一条查询结果。流式查询的好处是能够降低内存使用。 今天要分享的是Mybaits的流式查询。Mybatis流式查询通过使用游标一次处理一条数据的方式减少了内存的占用从而提高了大数据量查询的效率。 2、Mybaits流式查询 Mybaits在3.4.0 版本增加了流式查询也就是游标Cursor。更新日志传动门Issues · mybatis/mybatis-3 · GitHub 2.1 游标简介 游标的使用和List一样只不过返回的结果不同。 游标继承CloseableIterable接口所以游标是可关闭、可遍历的。包含三个方法 isOpen 游标的开关是否打开 isConsumed 通过游标是否将拉取的数据消费完也就是是否将数据全部取完。 getCurrentIndex 获取当前数据的位置位置是从0开始的。 2.2 游标的使用 定义简单的查询方法这里使用注解Select的方式代替Xml方便测试。 Select(select * from logan_log.logan_login) CursorLoganLogin testCursorQuery();编写测试类。因为游标是可关闭的所以使用完之后要想流一样关闭掉。这里采用try-resource 的方式简化流的关闭。 Test void testCursorSql() {try (CursorLoganLogin cursor loganLoginMapper.testCursorQuery()) {cursor.forEach((ll) - {System.out.println(ll: JSON.toJSONString(ll));System.out.println(ll cursor: cursor.getCurrentIndex());});} catch (IOException e) {throw new RuntimeException(e);} }处理结果报错了。。。 原因分析 A Cursor is already closed. 还没有处理数据查询完数据之后游标被关闭了。 由于Mybatis帮我们做了自动事务的提交。查询完毕之后就会提交事务关闭连接游标自然也被关闭了就会出现这样的问题。游标需要占用数据库的连接然后逐条的将数据返回的。 解决方案 将整个方法放在一个事务里面处理完数据之后在提交事务。比较暴力的解决方案就是使用声明式事务Transactional。大事务的处理可能会影响业务的并发。 采用小颗粒度的编程式事务TransactionTemplate只针对流式查询的结果包装到一个事务里面即可。 也可以采用手动提交事务使用SqlSessionFactory手动建立连接和关闭。 编程式事务解决问题可能更方便一些所以采用编程式事务的方法解决。 Test void testCursorSql2() {transactionTemplate.execute(new TransactionCallbackWithoutResult() {Overrideprotected void doInTransactionWithoutResult(TransactionStatus status) {System.out.println(TransactionStatus1: status.hasSavepoint());try (CursorLoganLogin cursor loganLoginMapper.testCursorQuery()) {cursor.forEach((ll) - {System.out.println(ll: JSON.toJSONString(ll));System.out.println(ll cursor: cursor.getCurrentIndex());});System.out.println(TransactionStatus2: status.hasSavepoint());} catch (IOException e) {throw new RuntimeException(e);}}}); }结果正常打印 2.3 游标查询的升级 游标的使用总会便随着事务对于开发者来说成了黄金搭档。能不能将其封装成一个方法来方便开发者调用呢还真有。就是使用ResultHandler参数。 有人就提出了对应的issues同时也在mybatis-3.4.6得到了支持。 2.3.1 ResultHandler参数说明 ResultHandler 作为参数参数传递返回值为Void。xml的配置需要指定ResultType。 查询到的结果也是封装在ResultHandler 里面的ResultContext中。 T getResultObject() 返回的数据结果 int getResultCount() 返回当前结果的记录数据。 boolean isStopped() 是否停止拉取数据 void stop() 中断数据拉取 2.3.2 ResultHandler的使用 ResultHandler 的使用官方文档中已经给出使用案例。我们来测试一下。 先定义一下方法。同样采用注解的方式替代xml。 ResultType(LoganLogin.class) Select(select * from logan_log.logan_login) void testStreamQuery(ResultHandlerLoganLogin handler);其中ResultType 必须要指定否则就会报错。 测试案例 Test void testStreamSql() {loganLoginMapper.testStreamQuery(resultContext - {System.out.println(handleResult: JSON.toJSONString(resultContext.getResultObject()));System.out.println(ResultCount: resultContext.getResultCount());System.out.println(isStop: resultContext.isStopped());System.out.println(---------------------------------------);}); }测试结果 2.4 fetchSize 的讨论 很多技术博客中都强调fetchSize 可以控制每次拉取的数量。 但是笔者配置测试之后发现并没有什么效果。在使用流式查询时官方文档中也没有说明必须要配置。 元芳你怎么看 3、流式查询在Mybatis-Plus中的使用 mybatis中已经支持了流式查询那么好用的MP怎么会不支持。MP在3.5.4中也得到了支持。 具体的方法如下 /*** 根据 entity 条件查询全部记录** param queryWrapper 实体对象封装操作类可以为 null* param resultHandler 结果处理器 {link ResultHandler}* since 3.5.4*/ void selectList(Param(Constants.WRAPPER) WrapperT queryWrapper, ResultHandlerT resultHandler);/*** 根据 entity 条件查询全部记录并翻页* param page 分页查询条件* param queryWrapper 实体对象封装操作类可以为 null* param resultHandler 结果处理器 {link ResultHandler}* since 3.5.4*/ void selectList(IPageT page, Param(Constants.WRAPPER) WrapperT queryWrapper, ResultHandlerT resultHandler); /*** 根据 Wrapper 条件查询全部记录** param queryWrapper 实体对象封装操作类* param resultHandler 结果处理器 {link ResultHandler}* since 3.5.4*/ void selectMaps(Param(Constants.WRAPPER) WrapperT queryWrapper, ResultHandlerMapString, Object resultHandler); /*** 根据 Wrapper 条件查询全部记录并翻页** param page 分页查询条件* param queryWrapper 实体对象封装操作类* param resultHandler 结果处理器 {link ResultHandler}* since 3.5.4*/ void selectMaps(IPage? extends MapString, Object page, Param(Constants.WRAPPER) WrapperT queryWrapper, ResultHandlerMapString, Object resultHandler); /*** 根据 Wrapper 条件查询全部记录* p注意 只返回第一个字段的值/p** param queryWrapper 实体对象封装操作类可以为 null* param resultHandler 结果处理器 {link ResultHandler}* since 3.5.4*/ E void selectObjs(Param(Constants.WRAPPER) WrapperT queryWrapper, ResultHandlerE resultHandler);就拿最典型的selectList来测试。 没有分页的查询。其中Wrapper主要是查询的Sql 的条件拼接也可以是空。ResultHandler就是我们的流式返回了。 Test void testStreamPlus() {loganLoginMapper.selectList(Wrappers.emptyWrapper(), resultContext-{System.out.println(handleResult: JSON.toJSONString(resultContext.getResultObject()));System.out.println(ResultCount: resultContext.getResultCount());System.out.println(isStop: resultContext.isStopped());System.out.println(---------------------------------------);}); }测试结果 有分页的查询和无分页方法是重载关系增加了分页参数Page。其中Page只是限定了拉取数据的总条数但是并不会自动封装到Page对象中。主要使用了, resultContext的stop的方法。 Test void testStreamPage() {PageLoganLogin page new Page(1, 2);loganLoginMapper.selectList(page, Wrappers.emptyWrapper(), resultContext-{System.out.println(当前处理第 resultContext.getResultCount() 条记录.);System.out.println(handleResult: JSON.toJSONString(resultContext.getResultObject()));System.out.println(isStop: resultContext.isStopped());System.out.println(---------------------------------------);});System.out.println(JSON.toJSONString(page.getRecords())); }测试结果
http://www.hkea.cn/news/14451380/

相关文章:

  • 在哪可以建一个网站专业加速器产业园
  • 网站怎么做301定向个人怎么申请微信小程序
  • 建设银行网站不能建行转他行了软文案例
  • 温州网站优化排名推广做ppt模板网站有哪些
  • 物业网站建设方案长沙免费旅游景点大全
  • 申请微信支付公司网站网站上怎么做推广
  • 房产网站 模板中山营销型网站设计
  • 网站设计的主题网站建设插导航条
  • 网站建设用户调研个人网站创建平台
  • 商城类网站怎么推广wordpress aj提交评论
  • 邯郸建设网站的公司如何搭建高访问量的网站
  • 网站开发 网页设计北京师范大学出版社湖北正规网站建设检修
  • 做淘宝那样的网站要多少钱西安网站建设公司西安网络公司
  • 怎么制作网站app河北seo公司
  • 网站建设负责那内容上传吗做新浪网网站所需的条件
  • 地方网站商城怎么做茂名网站建设价格
  • 网站制作的相关术语有哪些网站开发亿玛酷专注4
  • 高密哪里做网站好成都销售型网站
  • 做网站被骗怎么办梅州市住房和城乡建设局官方网站
  • 做网站签订合同长春制作网站企业
  • 杭州协会网站建设wordpress自动缩进
  • 网站建设哪个公司上海网站建设极简慕枫
  • 上海微信网站建设公司电话如何解决WordPress强制跳转
  • 网站seo服务网站正能量下载直接进入主页可以吗安全吗
  • 好的网站开发公司网站开发的意义
  • 商城网站如何建设方案61制作工厂网站
  • 怎样建单位的网站wordpress用户导入数据库表
  • 案例查询网站魅族的网站建设与安全
  • 全屏类网站做外贸网站进行销售 需要纳税吗
  • 各大搜索引擎网站提交入口广告关键词查询