Flutter数据库生成插件nitrite_generator的使用
Flutter数据库生成插件nitrite_generator的使用
Nitrite Generator 是一个用于 Nitrite 数据库的代码生成器。它使用 source_gen
包来生成代码。要使用生成器,请将以下包添加到您的项目中:
dart pub add nitrite_generator --dev
dart pub add build_runner --dev
更多详细信息请参阅 Nitrite 文档。
示例代码
以下是一个完整的示例代码,展示了如何使用 Nitrite Generator 生成数据库实体类。
文件结构
- example/
- example.dart
- example.no2.dart
example.dart
import 'package:nitrite/nitrite.dart';
part 'example.no2.dart'; // 自动生成的文件
// 定义一个可转换的实体类
@Convertable(className: 'MyBookConverter')
@Entity(name: 'books', indices: [
Index(fields: ['tags'], type: IndexType.nonUnique), // 非唯一索引
Index(fields: ['description'], type: IndexType.fullText), // 全文索引
Index(fields: ['price', 'publisher']), // 复合索引
])
class Book with _$BookEntityMixin {
// 主键字段
@Id(fieldName: 'book_id', embeddedFields: ['isbn', 'book_name'])
@DocumentKey(alias: 'book_id') // 设置别名
BookId? bookId;
String? publisher;
double? price;
List<String> tags = []; // 标签列表
String? description;
// 构造函数
Book([
this.bookId,
this.publisher,
this.price,
this.tags = const [],
this.description,
]);
}
// 复合主键类
@Convertable() // 可转换标记
class BookId {
String? isbn;
// 设置不同的字段名称在文档中
@DocumentKey(alias: "book_name") // 设置别名
String? name;
// 忽略该字段
@IgnoredKey() // 忽略标记
String? author;
}
自动生成的文件 example.no2.dart
// 自动生成的文件,无需手动编辑
import 'package:nitrite/nitrite.dart';
// 自动生成的 Book 类
class _$BookEntityMixin {}
// 自动生成的 BookId 类
class _$BookIdEntityMixin {}
使用自动生成的代码
import 'package:nitrite/nitrite.dart';
import 'example.dart';
void main() async {
// 创建一个内存数据库
var db = await Nitrite.builder().memory().open();
// 插入数据
var book = Book(
BookId(isbn: '1234567890', name: 'Dart Programming'),
'ABC Publisher',
29.99,
['Programming', 'Dart'],
'A comprehensive guide to Dart programming.'
);
var bookRepository = db.getRepository<Book>();
await bookRepository.insert(book);
// 查询数据
var books = await bookRepository.find();
for (var b in books) {
print('Book ID: ${b.bookId?.name}, Price: ${b.price}');
}
// 关闭数据库连接
await db.close();
}
通过上述步骤,您可以使用 Nitrite Generator 自动生成数据库实体类,并进行基本的增删改查操作。
更多关于Flutter数据库生成插件nitrite_generator的使用的实战教程也可以访问 https://www.itying.com/category-92-b0.html
更多关于Flutter数据库生成插件nitrite_generator的使用的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html
nitrite_generator
是一个用于生成 Nitrite 数据库模型和访问代码的 Flutter 插件。Nitrite 是一个嵌入式的 NoSQL 数据库,适用于 Flutter 和 Dart 应用程序。nitrite_generator
可以帮助开发者自动生成与 Nitrite 数据库交互的代码,从而减少手动编写模型和数据库访问代码的工作量。
安装 nitrite_generator
首先,你需要在 pubspec.yaml
文件中添加 nitrite_generator
和 build_runner
依赖:
dependencies:
nitrite: ^latest_version
dev_dependencies:
nitrite_generator: ^latest_version
build_runner: ^latest_version
然后运行 flutter pub get
来安装依赖。
创建模型类
接下来,你需要创建一个 Dart 类来表示你的数据库模型。使用 @NitriteEntity
注解来标记这个类,并使用 @NitriteId
注解来标记主键字段。
import 'package:nitrite/nitrite.dart';
import 'package:nitrite_annotations/nitrite_annotations.dart';
@NitriteEntity()
class User {
@NitriteId()
final String id;
final String name;
final int age;
User({required this.id, required this.name, required this.age});
}
生成代码
使用 build_runner
来生成 Nitrite 数据库的访问代码。在终端中运行以下命令:
flutter pub run build_runner build
这将会生成一个与 User
类对应的 UserRepository
类,用于与 Nitrite 数据库进行交互。
使用生成的代码
你可以使用生成的 UserRepository
类来执行数据库操作。以下是一个简单的示例:
import 'package:nitrite/nitrite.dart';
import 'user.dart'; // 你的模型类
import 'user_repository.dart'; // 生成的代码
void main() async {
final nitrite = await Nitrite.builder()
.openOrCreate();
final userRepository = UserRepository(nitrite);
// 插入用户
final user = User(id: '1', name: 'John Doe', age: 30);
await userRepository.insert(user);
// 查询用户
final users = await userRepository.find();
print(users);
// 更新用户
final updatedUser = User(id: '1', name: 'John Doe', age: 31);
await userRepository.update(updatedUser);
// 删除用户
await userRepository.delete('1');
// 关闭数据库
await nitrite.close();
}