本篇内容主要讲解“Flutter怎么用ORM框架管理数据库”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“Flutter怎么用ORM框架管理数据库”吧!
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 界面如下图所示。
到此,相信大家对“Flutter怎么用ORM框架管理数据库”有了更深的了解,不妨来实际操作一番吧!这里是亿速云网站,更多相关内容可以进入相关频道进行查询,关注我们,继续学习!
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。