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

怎么在百度做原创视频网站wordpress文档编辑器

怎么在百度做原创视频网站,wordpress文档编辑器,网络规划设计师论文万能模板,店铺装修目录 1.视图2.视图中列的可空性3.DAO4.流查询5.高级用途6.注意事项 1.视图 也可以将SQL 视图定义 为 Dart 类。为此,请编写一个抽象类来扩展View。此示例声明了一个视图,用于读取示例中架构中某个类别中添加的待办事项数量: abstract class C…

目录

  • 1.视图
  • 2.视图中列的可空性
  • 3.DAO
  • 4.流查询
  • 5.高级用途
  • 6.注意事项

1.视图

也可以将SQL 视图定义 为 Dart 类。为此,请编写一个抽象类来扩展View。此示例声明了一个视图,用于读取示例中架构中某个类别中添加的待办事项数量:

abstract class CategoryTodoCount extends View {// Getters define the tables that this view is reading from.Todos get todos;Categories get categories;// Custom expressions can be given a name by defining them as a getter:.Expression<int> get itemCount => todos.id.count();Query as() =>// Views can select columns defined as expression getters on the class, or// they can reference columns from other tables.select([categories.description, itemCount]).from(categories).join([innerJoin(todos, todos.category.equalsExp(categories.id))]);
}

在 Dart 视图中,使用

  • 抽象 getter 来声明您将从中读取的表(例如TodosTable get todos)。
  • Expressiongetter 添加列:(例如itemCount => todos.id.count())。
  • as用于定义支持视图的 select 语句的重写方法。 中引用的列select可能指两种类型的列:
  • 在视图本身上定义的列(itemCount如上例所示)。
  • 在引用表上定义的列(如categories.description示例中所示)。对于这些引用,
    表中列定义中使用的类型转换器等高级漂移功能也会应用于视图的列。

当被选中时,两种类型的列都将添加到视图的数据类中。

最后,需要通过将视图包含在参数中来将其添加到数据库或访问器中 views:

(tables: [Todos, Categories], views: [CategoryTodoCount])
class MyDatabase extends _$MyDatabase {

2.视图中列的可空性

对于 Dart 定义的视图,定义为Expressiongetter 的 表达式始终可空。此行为与TypedResult.read(用于从包含自定义列的复杂 select 语句中读取结果的方法)匹配。

如果引用的列可为空,或者所选表不是来自内连接(因为null在这种情况下整个表可能都是内连接),则引用另一个表的列的列可为空。

从上面的例子来看,

  • itemCount列可为空,因为它被定义为复杂 Expression
  • description引用 的列不可categories.description为空。这是因为它引用了categories,即视图
    select 语句的主表。

3.DAO

当你有大量查询时,将它们全部放入一个类中可能会变得繁琐。你可以通过将一些查询提取到主数据库类中可用的类中来避免这种情况。考虑以下代码:

part '../Dart API/todos_dao.g.dart';// the _TodosDaoMixin will be created by drift. It contains all the necessary
// fields for the tables. The <MyDatabase> type annotation is the database class
// that should use this dao.
(tables: [Todos])
class TodosDao extends DatabaseAccessor<MyDatabase> with _$TodosDaoMixin {// this constructor is required so that the main database can create an instance// of this object.TodosDao(MyDatabase db) : super(db);Stream<List<TodoEntry>> todosInCategory(Category category) {if (category == null) {return (select(todos)..where((t) => isNull(t.category))).watch();} else {return (select(todos)..where((t) => t.category.equals(category.id))).watch();}}
}

如果我们现在将类上的注释更改MyDatabase为**@DriftDatabase(tables: [Todos, Categories], daos: [TodosDao])** 并重新运行代码生成,todosDao则可以使用生成的 getter 来访问该 dao 的实例。

4.流查询

漂移的核心特性是每个查询都可以转换为自动更新流。无论查询返回单行还是多行,无论查询是从单个表读取还是连接多个表,这都能正常工作。

基础知识¶
在drift中,可运行的查询由接口表示Selectable,该接口具有以下方法:

  • Future<List> get():运行一次查询,返回所有行。
  • Future getSingle():运行查询一次,断言它产生返回的一行。
  • Future<T?> getSingleOrNull():类似getSingle(),但允许返回null空结果集。

并且每个方法都有一个匹配的**watch()**返回流的方法:

  • Stream<List> watch():监视查询,返回所有行。
  • Stream watchSingle():监视查询,断言每次运行查询时都会报告一行。
  • Stream<T?> watchSingleOrNull():类似watchSingle(),但返回空结果集null。

用于构建查询的所有漂移 API 都会返回一个Selectable可以监视的内容:

Selectable<TodoItem> allItemsAfter(DateTime min) {return select(todoItems)..where((row) => row.createdAt.isBiggerThanValue(min));
}

无论使用哪种方法,都可以使用 创建流allItemsAfter(value).watch()。由于StreamDart 中的常见构建块,因此大多数框架都可以使用它们:

  • Flutter 中,您可以使用 以声明方式监听流StreamBuilder
  • Riverpod 可以使用 来包装流。示例应用StreamProvider中也使用了此技术。

所有漂移流在监听之后都会发出最新的结果(因此即使表从未改变,您也会收到快照,而不必合并get()watch())。

5.高级用途

除了监听查询之外,您还可以直接监听表上的更新事件:

Future<void> listenForUpdates() async {final stream = tableUpdates(TableUpdateQuery.onTable(todoItems,limitUpdateKind: UpdateKind.update,));await for (final event in stream) {print('Update on todos table: $event');}
}

请注意,整个查询流功能都是以漂移方式实现的,因此流更新是一种启发式方法,可能会比必要的更频繁地触发。您也可以手动将表标记为已更新:

void markUpdated() {notifyUpdates({TableUpdate.onTable(todoItems, kind: UpdateKind.insert)});
}

6.注意事项

虽然流对于自动获取您正在运行的任何查询的更新非常有用,但了解其功能和局限性至关重要。流查询在漂移中以启发式方法实现:对于每个活动流,漂移会跟踪其正在监听的表(该信息可从查询构建器获取)。每当通过漂移 API 进行插入、更新或删除操作时,相关查询都会重新安排并再次运行。

这意味着:

  1. 数据库的其他用途(例如原生 SQLite 客户端)不会触发流查询更新。您可以手动注入更新作为解决方法。
  2. 流查询的更新频率通常会超出其应有的水平,因为我们无法仅筛选特定行的更新。这通常不是问题,但需要注意。流查询通常应该返回相对较少的行,并且执行时的计算开销不应过大。
http://www.dtcms.com/wzjs/542703.html

相关文章:

  • html网站建设的步骤前端培训班推荐
  • dw网页设计制作网站的成品做百度推广网站被攻击
  • 徐州免费建站模板网红营销概念
  • 怎么建设阿里巴巴国际网站首页深圳和海枫建设集团有限公司网站
  • 网站开发 论文wordpress 评论弹幕
  • 重庆哪家制作网站好手机网站开发建设方案
  • flash网站模板怎么用淮安做网站seo
  • 宜黄住房和城乡建设部网站wordpress文章图片怎么居中
  • 网站建设教程在线观看建设网站技术公司
  • 网站建设平台合同凡客诚品登录
  • 做外贸是网站好还是展会好大学学风建设网站
  • 介绍自己的家乡遵义网站建设中英文建设网站
  • php网站开发前言网站建设目的及意义
  • 婚庆网站大全安徽网站推广优化
  • 建设网站对比方案智能建站源码
  • 销售网站后台维护怎么做wordpress需要登录才可以看到内容
  • 网站开发技术可以做什么工作无人售货机
  • 网站建设维护保密协议学编程的培训机构
  • 学校网站建设所使用的技术企业微信app开发
  • 定制网站制作公司怎么样幼儿保育专业建设规划
  • 山东阳信建设局网站php是做网站还是网页
  • 网站布局 种类网站与维护
  • 龙岗 网站建设深圳信科电脑网页
  • 者珠海市建设局网站免费空间100m
  • 做服装搭配的流行趋势网站求手机网址
  • 揭阳市建设局网站公司部门介绍
  • 网站建设需要什么工具云南5个中风险地区
  • 建设银行网站设计特点wordpress漏洞教程
  • 资讯类响应式网站模板自己做的网站背景怎么设置
  • 广西建设厅网站在线服务做网站需要的资质