Flutter数据库ORM管理插件angel3_orm_postgres的使用
Flutter数据库ORM管理插件angel3_orm_postgres的使用
Angel3 ORM for PostgreSQL
Angel3 ORM 对 PostgreSQL 的支持。
支持的数据库
- PostgreSQL 版本 10 或更高版本
有关 ORM 的文档,请参阅 Developer Guide。
迁移
从版本 7.x 到 8.1.x
自 8.1.0 版本起,postgres
已从 2.x.x 升级到 3.x.x。这是一个破坏性变更,因为 postgres
3.x.x 大幅更改了其 API。因此,在升级到 8.1.0 及以上版本时,需要迁移 PostgreSQL 连接设置。其余部分应保持不变。请参阅新 PostgreSQL 连接设置的示例。
示例代码
以下是一个完整的示例,展示了如何使用 angel3_orm_postgres
插件连接到 PostgreSQL 数据库并执行查询:
import 'dart:io';
import 'package:angel3_orm_postgres/angel3_orm_postgres.dart';
import 'package:postgres/postgres.dart';
void main() async {
// 创建一个 PostgreSQL 连接池执行器
var executor = PostgreSqlPoolExecutor(
Pool.withEndpoints(
[
Endpoint(
host: Platform.environment['POSTGRES_HOSTNAME'] ?? 'localhost',
port: 5432,
database: Platform.environment['POSTGRES_DB'] ?? 'orm_test',
username: Platform.environment['POSTGRES_USERNAME'] ?? 'test',
password: Platform.environment['POSTGRES_PASSWORD'] ?? 'test123',
)
],
settings: PoolSettings(
maxConnectionAge: Duration(hours: 1),
maxConnectionCount: 5,
),
),
);
try {
// 执行查询并获取结果
var rows = await executor.query('users', 'SELECT * FROM users', {});
print(rows);
} catch (e) {
// 捕获并打印任何错误
print('Error: $e');
} finally {
// 确保在完成所有操作后关闭连接池
await executor.close();
}
}
关键点说明
- 环境变量:通过
Platform.environment
获取环境变量来配置数据库连接参数。这样可以避免硬编码敏感信息。 - 连接池设置:使用
PoolSettings
配置连接池的最大连接年龄和最大连接数,以优化性能。 - 异常处理:使用
try-catch-finally
结构确保即使发生错误也能正确关闭连接池。 - 查询执行:通过
executor.query
方法执行 SQL 查询,并将结果打印出来。
通过以上步骤,您可以轻松地在 Flutter 应用中集成 angel3_orm_postgres
插件,实现对 PostgreSQL 数据库的 ORM 管理。如果您有任何问题或需要进一步的帮助,请随时查阅官方文档或访问 Gitter 社区进行讨论。
更多关于Flutter数据库ORM管理插件angel3_orm_postgres的使用的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html
更多关于Flutter数据库ORM管理插件angel3_orm_postgres的使用的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html
当然,下面是一个关于如何使用Flutter中的angel3_orm_postgres
插件进行数据库ORM管理的代码示例。这个示例将展示如何连接到PostgreSQL数据库,定义模型,并执行基本的CRUD(创建、读取、更新、删除)操作。
首先,确保你已经在pubspec.yaml
文件中添加了必要的依赖项:
dependencies:
flutter:
sdk: flutter
angel3_framework: ^4.0.0 # 或者最新版本
angel3_orm: ^3.0.0 # 或者最新版本
angel3_orm_postgres: ^3.0.0 # 或者最新版本
postgres: ^2.0.0 # 或者最新版本
然后,运行flutter pub get
来安装这些依赖项。
接下来,创建一个Flutter项目(如果还没有的话),并在lib
目录下创建一个新的Dart文件,比如database.dart
,用于管理数据库连接和模型定义。
database.dart
import 'package:angel3_framework/angel3_framework.dart';
import 'package:angel3_orm/angel3_orm.dart';
import 'package:angel3_orm_postgres/angel3_orm_postgres.dart';
import 'package:postgres/postgres.dart';
part 'models/user.dart'; // 假设我们将模型定义在models文件夹中
Future<Angel> configureServer() async {
var app = Angel();
// 配置PostgreSQL连接
var connectionInfo = ConnectionInfo(
'your_database_host', // 替换为你的数据库主机
port: 5432, // PostgreSQL默认端口
databaseName: 'your_database_name', // 替换为你的数据库名称
username: 'your_username', // 替换为你的数据库用户名
password: 'your_password' // 替换为你的数据库密码
);
var pool = await PostgreSQLConnectionPool.connect(connectionInfo);
// 配置ORM
var orm = new AngelORM(pool);
orm.registerModel<User>(); // 注册User模型
app.use('/api/users', Service<User>(orm)); // 挂载服务到/api/users路径
return app;
}
models/user.dart
import 'package:angel3_orm/angel3_orm.dart';
part 'user.g.dart'; // 自动生成的代码将放在这里
@serializable
class User extends Model {
String? name;
int? age;
User({this.name, this.age});
}
final UserSchema _userSchema = UserSchema();
@ModelSchema(schema: _userSchema)
class UserSchema extends ModelSchema<User> {
@override
Map<String, dynamic> toJson(User model, {bool includeRelations = false}) {
return {
'name': model.name,
'age': model.age,
};
}
@override
User fromJson(Map<String, dynamic> json, {User? instance}) {
return User(name: json['name'] as String?, age: json['age'] as int?);
}
}
main.dart
import 'package:flutter/material.dart';
import 'database.dart';
void main() async {
WidgetsFlutterBinding.ensureInitialized();
var app = await configureServer();
// 这里你可以启动一个HTTP服务器来监听请求,但为了简单起见,我们不在Flutter应用中实际启动服务器。
// 在实际应用中,你可能会在后台隔离中运行服务器,或者这只是一个服务器端代码示例。
// 例如,使用`app.listen(port: 3000);`来启动服务器。
runApp(MyApp());
}
class MyApp extends StatelessWidget {
@override
Widget build(BuildContext context) {
return MaterialApp(
home: Scaffold(
appBar: AppBar(
title: Text('Flutter PostgreSQL ORM Demo'),
),
body: Center(
child: Text('Check the console for server logs.'),
),
),
);
}
}
注意:这个示例是为了展示如何在Flutter项目中配置和使用angel3_orm_postgres
插件。然而,在Flutter前端应用中通常不会直接运行这样的服务器代码。你可能需要将服务器代码放在一个单独的服务端项目中(例如,一个Dart命令行应用),并在Flutter前端通过HTTP请求与之交互。
确保在运行代码之前替换数据库连接信息(如主机名、数据库名、用户名和密码)为你的实际数据库信息。此外,你可能需要运行build_runner
命令来生成序列化代码:
flutter pub run build_runner build
这个命令会在models/user.g.dart
文件中生成必要的序列化代码。