Flutter数据库管理插件easy_orm_postgres的使用
Flutter数据库管理插件easy_orm_postgres的使用
Easy ORM Postgresql 是什么?
Easy ORM是一个简单的方式来使用你的PostgreSQL数据库,并将Dart对象映射到SQL查询以及将SQL结果映射回Dart对象。
所有内容都是强类型的(返回的数据、查询、插入等),并且为你创建数据库模型。我认为可以说Easy ORM是唯一一个在PostgreSQL上工作的ORM,并且实现了这一点。
ORM代表对象关系映射(Object Relational Mapping)。其他语言的流行ORM包括SQLAlchemy和Entity Framework。
Easy ORM目前是一个低功能版本的这些ORM,支持基本的插入、更新、选择和删除语句。Where子句支持嵌套和简单的“与”、“或”语句。其目的是尽量少用SQL,当确实需要使用时,可以通过此ORM使用存储过程或视图(从v0.4.0开始支持)。
功能可能有所缺失,但我希望基本功能已经到位。如果你想要某个功能或增强功能,请去GitHub添加一个issue。
快速示例使用
这里我们从Northwind数据库中选择state_id大于30且名称以’ia’结尾的US States。如果你想添加一个功能或增强功能,请去GitHub添加一个issue。
var result = await Db().us_states.selectQuery(
where: ((e) => Where(e.state_name.like("%ia"))),
);
如果你想要运行example
项目中的示例,请从GitHub获取源码,然后创建一个本地的SQL数据库(脚本文件名为script2CreateLocalSqlDockerDb.sh
)。
如何使用
安装
- 添加以下开发依赖项和标准依赖项:
dart pub add --dev freezed
dart pub add --dev build_runner
dart pub add --dev json_serializable
dart pub add easy_orm_postgres
- 安装CLI工具,运行以下命令:
dart pub global activate easy_orm_cli
- 使用终端导航到你的项目的根目录(即包含
pubspec.yaml
文件的文件夹),然后运行generate
命令来创建数据库的.dart
文件。你需要知道数据库登录信息并指定所有参数(主机、端口、数据库名、用户名、密码、模式)。你还需要指定Dart项目的包名。CLI工具会访问你的数据库并从PostgreSQL表information_schema.columns
中读取数据,请确保你的SQL登录具有该表的访问权限。
easy_orm_cli generate --host localhost --port 5433 --db postgres -u postgres -p postgres --schema public --package example
- 创建一个PostgreSQL连接:
var connection = PostgreSQLConnection('localhost', 5433, 'postgres', username: 'postgres', password: 'postgres');
- 导入Db文件:
import 'package:example/generatedDb/db/Db.dart';
- 添加一个简单的查询(定义查询时需要传入连接对象):
var result = await Db().us_states.selectQuery(
where: ((e) => Where(e.state_name.like("%ia"))),
);
- 打印查询结果(结果类型为
SqlResponse_Success
或SqlResponse_Failure
,这里假设它是成功的):
print((result as SqlResponse_Success<List<Us_state>>).result);
…这样就完成了。你可以编写代码来自动访问你的数据库,并在对象之间自动映射,而无需编写任何SQL代码!
更多示例
查看GitHub上的easy_orm/example/test
部分。
SQL vs easy_orm
Dart代码
SQL | Dart |
---|---|
sql SELECT * from categories; |
dart await Db().categories.selectQuery(); |
sql SELECT * from products WHERE unit_price > 10; |
dart await Db().products.selectQuery(where: (x) => Where(x.unit_price.gt(10))); |
sql SELECT supplier_id, category_id FROM products |
dart await Db().products.selectQuery2Cols((e) => e.supplier_id, (e) => e.category_id); |
sql SELECT DISTINCT supplier_id FROM products |
```dart var result = await Db().products.selectQuery1Col((e) => e.supplier_id); var supplierIds = (result as SqlResponse_Success<List<int?>>).result; supplierIds.toSet(); |
更多关于Flutter数据库管理插件easy_orm_postgres的使用的实战教程也可以访问 https://www.itying.com/category-92-b0.html
更多关于Flutter数据库管理插件easy_orm_postgres的使用的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html
当然,以下是一个关于如何在Flutter项目中使用easy_orm_postgres
插件进行数据库管理的示例代码。easy_orm_postgres
是一个用于Flutter的ORM(对象关系映射)插件,它简化了与PostgreSQL数据库的交互。
首先,确保你已经在pubspec.yaml
文件中添加了easy_orm_postgres
依赖:
dependencies:
flutter:
sdk: flutter
easy_orm_postgres: ^最新版本号
然后运行flutter pub get
来获取依赖。
接下来,我们编写一些示例代码来展示如何使用easy_orm_postgres
。
1. 配置数据库连接
首先,我们需要配置数据库连接。这通常在应用的入口文件(如main.dart
)中完成。
import 'package:flutter/material.dart';
import 'package:easy_orm_postgres/easy_orm_postgres.dart';
void main() async {
WidgetsFlutterBinding.ensureInitialized();
// 配置数据库连接
var config = PostgresConfig(
host: 'your_database_host',
port: 5432,
database: 'your_database_name',
username: 'your_username',
password: 'your_password',
);
// 初始化ORM
await PostgresORM.init(config);
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 database operations.'),
),
),
);
}
}
2. 定义数据模型
接下来,我们定义一个数据模型。这个模型将映射到数据库中的一个表。
import 'package:easy_orm_postgres/easy_orm_postgres.dart';
@Table('users')
class User {
@PrimaryKey()
int id;
@Column()
String name;
@Column()
int age;
User({required this.id, required this.name, required this.age});
// 构造函数用于从数据库创建对象
User.fromJson(Map<String, dynamic> json)
: id = json['id'] as int,
name = json['name'] as String,
age = json['age'] as int;
// 将对象转换为JSON,用于保存到数据库
Map<String, dynamic> toJson() => {
'id': id,
'name': name,
'age': age,
};
}
3. 执行数据库操作
现在,我们可以在应用的任何部分执行数据库操作,如插入、查询、更新和删除。
import 'package:flutter/material.dart';
import 'package:easy_orm_postgres/easy_orm_postgres.dart';
import 'user_model.dart'; // 假设上面的User类在这个文件中
class DatabaseDemo extends StatefulWidget {
@override
_DatabaseDemoState createState() => _DatabaseDemoState();
}
class _DatabaseDemoState extends State<DatabaseDemo> {
@override
void initState() {
super.initState();
_performDatabaseOperations();
}
Future<void> _performDatabaseOperations() async {
// 插入数据
var newUser = User(id: 1, name: 'John Doe', age: 30);
await User.insert(newUser);
// 查询数据
var users = await User.query().findAll();
users.forEach((user) {
print('User: ${user.name}, Age: ${user.age}');
});
// 更新数据
var userToUpdate = users.first;
userToUpdate.age = 31;
await userToUpdate.update();
// 删除数据
await User.deleteWhere(User.id == userToUpdate.id);
}
@override
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(
title: Text('Database Operations'),
),
body: Center(
child: Text('Database operations are being performed. Check the console.'),
),
);
}
}
请注意,这个示例代码假设你已经在PostgreSQL数据库中创建了相应的users
表,并且表的结构与User
类匹配。在实际应用中,你可能还需要处理错误、异步操作以及更复杂的查询逻辑。
希望这个示例能帮助你开始在Flutter项目中使用easy_orm_postgres
进行数据库管理!