Flutter PostgreSQL ORM插件needle_orm_postgres的使用
Flutter PostgreSQL ORM插件needle_orm_postgres的使用
needle_orm_postgres
是一个用于在 Flutter 应用中与 PostgreSQL 数据库交互的 ORM 插件。它基于 needle_orm
并提供了对 PostgreSQL 数据库的支持。
重要事项
当使用 IN
语句时,参数名称后面必须跟一个空格!以下是一个错误示例:
'SELECT * FROM books where id in @idList'
正确的写法应该是:
'SELECT * FROM books where id in @idList '
完整示例
以下是使用 needle_orm_postgres
的完整示例代码。
初始化数据库连接
首先,我们需要初始化与 PostgreSQL 数据库的连接。这可以通过 initPostgreSQL
函数完成。
import 'package:mysql1/mysql1.dart';
import 'package:needle_orm/needle_orm.dart';
import 'package:needle_orm_postgres/needle_orm_postgres.dart';
// 初始化 PostgreSQL 数据库连接
Future<Database> initPostgreSQL() async {
return PostgreSqlPoolDatabase(PgPool(
PgEndpoint(
host: 'localhost',
port: 5432,
database: 'needle',
username: 'postgres',
password: 'postgres',
),
settings: PgPoolSettings()
..maxConnectionAge = Duration(hours: 1) // 设置最大连接年龄为1小时
..concurrency = 5, // 设置并发数为5
));
}
定义模型
接下来,我们定义一个简单的模型类 Book
。
class Book {
int? id;
String title;
String author;
Book({this.id, required this.title, required this.author});
}
创建表
使用 needle_orm
和 needle_orm_postgres
提供的功能创建表。
import 'package:needle_orm/needle_orm.dart';
import 'package:needle_orm_postgres/needle_orm_postgres.dart';
class BookModel extends Model<Book> {
final int? id;
final String title;
final String author;
BookModel({this.id, required this.title, required this.author});
static const tableName = 'books';
static final columns = [
Column('id', isPrimaryKey: true),
Column('title'),
Column('author'),
];
factory BookModel.fromMap(Map<String, dynamic> map) {
return BookModel(
id: map['id'],
title: map['title'],
author: map['author'],
);
}
Map<String, dynamic> toMap() {
return {
'id': id,
'title': title,
'author': author,
};
}
}
插入数据
插入一条新的书籍记录到数据库。
void main() async {
// 初始化数据库连接
Database db = await initPostgreSQL();
// 创建表
await db.createTable(BookModel);
// 插入数据
await db.insert(BookModel(
title: 'Dart编程实战',
author: '张三',
));
print('数据插入成功');
}
查询数据
查询数据库中的所有书籍记录。
void main() async {
// 初始化数据库连接
Database db = await initPostgreSQL();
// 查询所有书籍
List<Book> books = await db.select(BookModel);
// 打印查询结果
books.forEach((book) {
print('ID: ${book.id}, Title: ${book.title}, Author: ${book.author}');
});
}
更新数据
更新数据库中某本书的作者信息。
void main() async {
// 初始化数据库连接
Database db = await initPostgreSQL();
// 更新书籍的作者
await db.update(
BookModel(id: 1, author: '李四'),
where: 'id = [@id](/user/id) ',
params: {'id': 1},
);
print('数据更新成功');
}
删除数据
删除数据库中某本书的记录。
void main() async {
// 初始化数据库连接
Database db = await initPostgreSQL();
// 删除书籍
await db.delete(BookModel, where: 'id = [@id](/user/id) ', params: {'id': 1});
print('数据删除成功');
}
更多关于Flutter PostgreSQL ORM插件needle_orm_postgres的使用的实战教程也可以访问 https://www.itying.com/category-92-b0.html
更多关于Flutter PostgreSQL ORM插件needle_orm_postgres的使用的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html
needle_orm_postgres
是一个用于 Flutter 的 PostgreSQL ORM 插件,它可以帮助开发者更方便地与 PostgreSQL 数据库进行交互。以下是如何使用 needle_orm_postgres
的基本步骤:
1. 添加依赖
首先,在 pubspec.yaml
文件中添加 needle_orm_postgres
依赖:
dependencies:
flutter:
sdk: flutter
needle_orm_postgres: ^最新版本
然后运行 flutter pub get
来获取依赖。
2. 配置数据库连接
在使用 ORM 之前,需要配置数据库连接。你可以通过以下代码来设置连接参数:
import 'package:needle_orm_postgres/needle_orm_postgres.dart';
void main() async {
var orm = PgOrm(
host: 'localhost',
port: 5432,
database: 'your_database',
username: 'your_username',
password: 'your_password',
);
await orm.connect();
}
3. 定义模型
needle_orm_postgres
使用 Dart 类来表示数据库表。你需要为每个表定义一个模型类,并使用注解来映射字段。
import 'package:needle_orm_postgres/needle_orm_postgres.dart';
@Table(name: 'users')
class User {
@PrimaryKey()
int id;
@Column()
String name;
@Column()
String email;
User({this.id, this.name, this.email});
}
4. 创建表
你可以使用 ORM 来自动创建表:
await orm.createTable(User);
5. 插入数据
插入数据非常简单,只需创建一个模型实例并调用 insert
方法:
var user = User(name: 'John Doe', email: 'john@example.com');
await orm.insert(user);
6. 查询数据
你可以使用 find
方法来查询数据:
var users = await orm.find(User);
for (var user in users) {
print('User: ${user.name}, Email: ${user.email}');
}
你还可以使用 where
条件来过滤查询结果:
var users = await orm.find(User, where: 'name = ?', args: ['John Doe']);
7. 更新数据
更新数据也很简单,只需修改模型实例并调用 update
方法:
user.name = 'Jane Doe';
await orm.update(user);
8. 删除数据
你可以使用 delete
方法来删除数据:
await orm.delete(user);
9. 关闭连接
在应用程序结束时,记得关闭数据库连接:
await orm.close();
10. 事务处理
needle_orm_postgres
也支持事务处理:
await orm.transaction((tx) async {
var user = User(name: 'Alice', email: 'alice@example.com');
await tx.insert(user);
user.name = 'Bob';
await tx.update(user);
});