iis服务器助手广告广告
返回顶部
首页 > 资讯 > 移动开发 >Flutter利用ORM框架管理数据库详解
  • 930
分享到

Flutter利用ORM框架管理数据库详解

摘要

目录前言floor 数据库版本升级版本升级实例总结前言 我们前面一篇介绍了使用 floor 这个 ORM 框架处理 Flutter 本地的 sqlite 数据库。使用 ORM 框架最

前言

我们前面一篇介绍了使用 floor 这个 ORM 框架处理 Flutter 本地的 sqlite 数据库。使用 ORM 框架最大的好处是简化了数据库维护的代码量,使得我们可以专注于业务代码实现。在之前,我们也讲到了不同 App 版本的 数据表结构变化后,如何使用 sqflite 来处理版本升级。本篇,我们看看使用 floor 如何处理数据库版本升级。

floor 数据库版本升级

floor 框架同样提供了数据库版本号,当前使用的版本号使用注解配置。

@Database(version: 1, entities: [Memo])

当数据表结构发生变化时,就需要变更版本号指定新的版本。同时需要做如下处理:

  • 更新实体类:比如增加或减少字段,变更字段类型等等;
  • 编写迁移处理Migration类对象,Migration 类定义如下:
Migration(this.startVersion, this.endVersion, this.migrate)

其中第一个参数为起始版本号,第二个参数为要迁移到的版本号,最后是一个迁移处理函数,函数定义为:Future<void> Function(sqflite.Database database) migrate。我们要做的数据表变动就在这个函数里处理。

将编写好的Migration类对象添加到数据库初始化的 addMigrations 方法中,addMigrations方法接收一个Migration对象数组,因此是支持多种迁移的,比如从版本1迁移到版本3的迁移对象,从版本2迁移到版本3的迁移对象,从而满足多个版本同时迁移。

final database = await $FloorAppDatabase
    .databaseBuilder('app_database.db')
    .addMigrations([migration1to3, migration2to3])
    .build();

实体类变更后,需要用代码生成命令重新生成数据库操作的相关代码。

看起来非常简单,我们来看实际的例子。

版本升级实例

我们给之前的备忘录增加一个分类(cateGory)字段,可以设置备忘录的分类,分类我们简单地固定为预设的几类。我们按照上面的步骤一步步编写代码即可。

变更版本:将数据库版本号改为2;

@Database(version: 2, entities: [Memo])

在备忘录类增加分类字段,由于已有数据的分类字段是 null 的,因此需要设置这个字段可为空Nullable;设置为非空也可以,只是需要在迁移时给旧版本已有数据相应字段设置非空初始值。

@entity
class Memo {
  @PrimaryKey(autoGenerate: true)
  final int? id;
  String title;
  String content;
  @ColumnInfo(name: 'created_time')
  DateTime createdTime;
  @ColumnInfo(name: 'modified_time')
  DateTime modifiedTime;
  String? category;
  List<String> tags;

  Memo({
    this.id,
    required this.title,
    required this.content,
    required this.createdTime,
    required this.modifiedTime,
    this.category = '',
    required this.tags,
  });
}

编写数据库迁移处理对象,并加入到版本迁移中。

final migration1to2 = Migration(1, 2, (database) async {
  await database.execute('ALTER TABLE Memo ADD COLUMN category TEXT');
  // 可选,设置旧版本字段初始值
  await database.update('Memo',{'category': ''});
});

Future<void> main() async {
  WidgetsFlutterBinding.ensureInitialized();

  final database = await $FloorMemoDatabase
      .databaseBuilder('app_database.db')
      .addMigrations([migration1to2]).build();

  final dao = database.memoDao;

  getIt.reGISterSingleton<MemoDao>(dao, signalsReady: true);

  runApp(const MyApp());
}

运行下面的命令生成代码。

flutter packages pub run build_runner build

当然,我们也需要对 UI 相关的代码进行变更,变更后的 UI 界面如下图所示。

完整代码已经提交到:本地存储相关代码。

总结

从代码量上来说,使用 floor 和直接使用 sqflite 处理版本迁移差不多。相比直接使用 sqflite 做数据库版本迁移,使用 floor 的好处是可以通过添加多个 Migration 对象支持多版本迁移。

到此这篇关于Flutter利用ORM框架管理数据库详解的文章就介绍到这了,更多相关Flutter ORM框架管理数据库内容请搜索编程网以前的文章或继续浏览下面的相关文章希望大家以后多多支持编程网!

--结束END--

本文标题: Flutter利用ORM框架管理数据库详解

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

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

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

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

下载Word文档
猜你喜欢
  • Flutter利用ORM框架管理数据库详解
    目录前言floor 数据库版本升级版本升级实例总结前言 我们前面一篇介绍了使用 floor 这个 ORM 框架处理 Flutter 本地的 SQLite 数据库。使用 ORM 框架最...
    99+
    2023-05-16
    Flutter ORM框架管理数据库 Flutter管理数据库 Flutter ORM框架
  • Flutter利用ORM框架简化本地数据库管理详解
    目录前言floor 简介ORM 映射转换器代码改造总结前言 前面两篇我们介绍了使用 sqflite 管理 Flutter 本地 SQLite 数据库。使用 sqflite 相对来说还...
    99+
    2023-05-15
    Flutter ORM框架本地数据库管理 Flutter本地数据库管理 Flutter ORM框架
  • Flutter怎么用ORM框架管理数据库
    本篇内容主要讲解“Flutter怎么用ORM框架管理数据库”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“Flutter怎么用ORM框架管理数据库”吧!floor 数据库版本升级floor 框架同...
    99+
    2023-07-06
  • Flutter怎么用ORM框架简化本地数据库管理
    这篇“Flutter怎么用ORM框架简化本地数据库管理”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇“Flutter怎么用OR...
    99+
    2023-07-05
  • Python ORM数据库框架Sqlalchemy的使用教程详解
    目录概念和数据类型安装连接创建数据库表类(模型)生成数据库表会话增删改查增查改删执行裸sqlwith关闭会话sql建造者模式封装的工具数据库配置文件database.properti...
    99+
    2024-04-02
  • PHP函数的数据库ORM框架
    PHP作为一种优秀的编程语言,应用广泛,其中,数据库ORM框架是一种非常重要的技术。在PHP中,ORM框架可以让开发人员把与数据库的操作封装成函数的形式,从而减轻开发人员的负担,提高开发效率。MySQL是PHP中常见的数据库,而在MySQL...
    99+
    2023-05-19
    数据库 ORM框架 PHP函数
  • PHP 数据库操作与ORM 框架
    php中操作数据库的方法有两种:低级pdo api和简化操作的orm框架。pdo允许直接与数据库交互,通过连接、查询和获取结果的步骤实现。orm框架(如doctrine)将数据库表映射为...
    99+
    2024-04-30
    php orm mysql
  • 详解Flutter 响应式状态管理框架GetX
    目录一、状态管理框架对比ProviderBLoCGetX二、基本使用2.1 安装与引用2.2 使用GetX改造Counter App2.3 GetX代码插件三、其他功能3.1 路由管...
    99+
    2024-04-02
  • PHP中怎么使用ORM框架连接数据库
    这篇文章主要介绍“PHP中怎么使用ORM框架连接数据库”,在日常操作中,相信很多人在PHP中怎么使用ORM框架连接数据库问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”PHP中怎么使用ORM框架连接数据库”的疑...
    99+
    2023-07-06
  • PHP使用ORM框架连接数据库的方法
    PHP使用ORM框架连接数据库的方法ORM(Object-Relational Mapping)框架是一种将对象模型和关系型数据库模型进行映射的技术。它可以让开发者使用对象的方式来操作数据库,从而避免了手写SQL语句的繁琐和容易出错的问题。...
    99+
    2023-05-15
    PHP 数据库连接 ORM框架
  • 使用C++的ORM框架QxORM详解
    QxORM中,我们用的最多的无非是这两点 官方表述是这样的: 持久性:支持最常见的数据库,如SQLite、MySQL、PostgreSQL、Oracle、MS SQL Server、...
    99+
    2024-04-02
  • ORM模型框架操作mysql数据库的方法
    【什么是ORM】 ORM 全称是(Object Relational Mapping)表示对象关系映射; 通俗理解可以理解为编程语言的虚拟数据库; 【理解ORM】 用户地址信息数据库...
    99+
    2024-04-02
  • 使用Django框架中ORM系统实现对数据库数据增删改查
    目录1.数据的增删改查----------增加数据在视图函数中导入User模型类,然后使用下面的方法添加数据:2.数据的增删改查----------查找数据这时在定义模型类时定义的_...
    99+
    2024-04-02
  • 详解如何使用Node.js连接数据库ORM
    目录ORM下载量typeormsequlizeprismaORM 在上文中我们讲了如何使用node.js mysql2连接数据库,接下来讲讲ORM 下面摘一段百科对ORM的介绍 对象...
    99+
    2022-12-19
    Node.js连接数据库ORM Node数据库ORM
  • Spring框架JdbcTemplate数据库事务管理完全注解方式
    目录Spring JdbcTemplate事务注解配置类方式配置完全注解方式一、创建配置类二、测试注解方式的事务管理Spring JdbcTemplate事务注解 配置类方式配置 在...
    99+
    2024-04-02
  • Django框架ORM操作数据库不生效问题示例解决方法
    目录问题描述定位过程 首先,我们怀疑是SQL语句拼装错误(比如ID不对),导致了删除不生效解决方案总结本文详细描述使用Django 的ORM框架操作PostgreSQL数据库删除不生...
    99+
    2023-01-07
    django orm操作数据库不生效 django orm框架操作
  • Flutter中数据库的使用教程详解
    在Flutter开发过程中,我门有时候需要对一些数据进行本地的持久化存储,使用sp文件形式虽然也能解决问题,但是有时数据量较大的时候,显然我们文件形式就不太合适了,这时候我们就需要使...
    99+
    2024-04-02
  • 利用Python多处理库处理3D数据详解
    今天我们将介绍处理大量数据时非常方便的工具。我不会只告诉您可能在手册中找到的一般信息,而是分享一些我发现的小技巧,例如tqdm与 multiprocessing​imap​​一起使用...
    99+
    2024-04-02
  • Spring框架对于Bean的管理详解
    目录什么是Bean管理Bean管理操作的两种方式基于注解的方式实现Bean管理和注入属性(常用)1.什么是注解2.Spring针对Bean管理中创建对象提供的注解3.用注解的方式创建...
    99+
    2024-04-02
  • 阿里云数据库管理平台高效管理数据库的利器
    在信息化时代,数据库是企业的重要基础设施之一,对于企业的运营和决策有着至关重要的影响。然而,数据库管理是一项复杂的工作,需要专业知识和技能。为此,阿里云推出了数据库管理平台,帮助用户更高效地管理和维护数据库。本文将详细介绍阿里云数据库管理平...
    99+
    2023-11-10
    高效 阿里 利器
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作