Flutter——数据库Drift开发详细教程(二)

目录

1.核心API

1.1查询数据列表分页

限制返回的结果数量limit ,从某一位置开始查询offset

dart 复制代码
///limit=10, offset=10
Future<List<TodoItem>> limitTodos(int limit, {int? offset}) {
  return (select(todoItems)..limit(limit, offset: offset)).get();
}

1.2 列表排序

使用该orderBy方法。它需要一个函数列表,用于从表中提取各个排序项。您可以使用任何表达式作为排序项。

dart 复制代码
///根据对象字段title,字母排序
  Future<List<TodoItem>> sortEntriesAlphabetically() {
    return (select(todoItems)
          ..orderBy([
            // (t) => OrderingTerm(expression: t.title, mode: OrderingMode.desc),
            (t) => OrderingTerm(expression: t.title),
          ]))
        .get();
  }
  ///下图是结果,左1  mode: OrderingMode.desc 反向排序
  ///左2 默认顺序排序

1.3推迟获取与观察

如果您希望使查询可作为Future或 来使用,则可以使用其中一个抽象基类Stream来优化返回类型;Selectable ,返回数据对象或者流类型 自行选择

dart 复制代码
// Exposes `get` and `watch`
MultiSelectable<TodoItem> pageOfTodos(int page, {int pageSize = 10}) {
  return select(todoItems)..limit(pageSize, offset: page);
}

// Exposes `getSingle` and `watchSingle`
SingleSelectable<TodoItem> selectableEntryById(int id) {
  return select(todoItems)..where((t) => t.id.equals(id));
}

// Exposes `getSingleOrNull` and `watchSingleOrNull`
SingleOrNullSelectable<TodoItem> entryFromExternalLink(int id) {
  return select(todoItems)..where((t) => t.id.equals(id));
}
相关推荐
我科绝伦(Huanhuan Zhou)42 分钟前
PostgreSQL 18 新特性解析(附一键安装脚本)
数据库·postgresql
hong_zc2 小时前
redis之缓存
数据库·redis·缓存
诺青2353 小时前
MongoDB副本集
数据库·mongodb
alexhilton3 小时前
灵活、现代的Android应用架构:完整分步指南
android·kotlin·android jetpack
正在走向自律4 小时前
金仓数据库打通电子证照国产化“最后一公里”——福建某地2TB MongoDB无缝迁移实践
数据库·mongodb·国产数据库·电科金仓
阿波罗尼亚4 小时前
复杂查询:直接查询/子查询/视图/CTE
java·前端·数据库
Go高并发架构_王工4 小时前
MySQL内存优化:缓冲池与查询缓存调优技术详解
数据库·mysql·缓存
disanleya5 小时前
mysql怎么安装,新手安装MySQL后如何安全备份不踩坑?
数据库·mysql
zhennann5 小时前
VonaJS多租户同时支持共享模式和独立模式
数据库·typescript·node.js·nestjs
打码人的日常分享5 小时前
信息化系统安全建设方案
大数据·数据库·人工智能·安全·系统安全