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);
});
        
      
            
            
            
