📜  flutter floor 数据库命令 - Dart (1)

📅  最后修改于: 2023-12-03 15:30:48.321000             🧑  作者: Mango

Flutter Floor 数据库命令 - Dart

什么是 Flutter Floor 数据库框架?

Flutter Floor 是基于 SQLite 数据库构建的 ORM 框架,可帮助开发者方便地在 Flutter 应用中使用数据库操作。它提供了一个简单而强大的 API,允许开发者通过模型管理表格和数据,而无需编写复杂的 SQL 查询语句。

安装和导入 Flutter Floor

在项目 pubspec.yaml 文件中添加以下依赖:

floor: ^0.16.0
floor_generator: ^0.16.0

main.dart 文件中添加以下导入:

import 'package:floor/floor.dart';
import 'package:floor_generator/floor_generator.dart';
使用 Flutter Floor 进行数据库操作
创建数据库控制器
@Database(version: 1, entities: [Person])
abstract class AppDatabase extends FloorDatabase {
  PersonDao get personDao;
}
  • 通过 @Database 注解创建数据库控制器, version 属性是当前数据库版本, entities 则是实体的列表。

  • PersonDao 通过 getter 方法来获取它。

定义模型类
@Entity(tableName: 'persons')
class Person {
  @PrimaryKey(autoGenerate: true)
  final int id;

  final String name;
  final int age;

  Person({this.id, this.name, this.age});
}
  • 通过 @Entity 注解来标记实体, tableName 属性是数据库表格的名称。

  • @PrimaryKey 注解来定义表格的主键字段, autoGenerate 属性为 true 时主键自动递增。

创建数据访问对象
@dao
abstract class PersonDao {
  @Query('SELECT * FROM persons')
  Future<List<Person>> findAllPersons();

  @Query('SELECT * FROM persons WHERE id = :id')
  Future<Person> findPersonById(int id);

  @insert
  Future<void> insertPerson(Person person);
}
  • @dao 注解 标记了它是一个数据访问对象。

  • @Query 注解与 SQL 查询语句 结合使用,返回包含查询结果的对象。

  • @insert 注解用于执行 INSERT 操作。

数据库实例化
final database = await $FloorAppDatabase.databaseBuilder('app_database.db').build();
  • databaseBuilder 方法用于构建数据库实例。参数为数据库名称。

  • build 方法用于构建数据库实例,返回一个 Future<AppDatabase> 对象。

数据库操作
Person person = Person(id: null, name: '小明', age: 22);
await database.personDao.insertPerson(person);
  • 创建 Person 实例。

  • 通过 await database.personDao.insertPerson(person); 方法将 Person 对象插入数据表格。

总结

Flutter Floor 是一个轻量级但强大的 Dart ORM 框架,它提供了一个简单的 API 来管理 SQLite 数据库。在 Flutter 应用程序中使用它,能够轻松地进行数据库操作,使得开发人员可以神速构建出高质量的应用程序。