📅  最后修改于: 2023-12-03 15:30:48.321000             🧑  作者: Mango
Flutter Floor 是基于 SQLite 数据库构建的 ORM 框架,可帮助开发者方便地在 Flutter 应用中使用数据库操作。它提供了一个简单而强大的 API,允许开发者通过模型管理表格和数据,而无需编写复杂的 SQL 查询语句。
在项目 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';
@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 应用程序中使用它,能够轻松地进行数据库操作,使得开发人员可以神速构建出高质量的应用程序。