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_ormneedle_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

1 回复

更多关于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);
});
回到顶部