NAME
PDK::DBI::Role - Moose role for database operations in Netdisco applications
SYNOPSIS
package MyNetdiscoDB;
use Moose;
with 'Netdisco::DBI::Role';
# Implement required methods
sub clone { ... }
sub batchExecute { ... }
# Use the role's methods
$self->batchInsert($columnMap, $tableName, $dataObjs);
DESCRIPTION
PDK::DBI::Role 是一个 Moose 角色,为应用程序提供数据库操作功能。它定义了通用的数据库连接属性和方法, 特别是用于批量插入操作的功能。
ATTRIBUTES
dsn
数据源名称(Data Source Name)。
user
数据库用户名。
password
数据库密码。
dbi
DBI 对象,延迟构建。
REQUIRED METHODS
使用此角色的类必须实现以下方法:
clone
创建对象的副本。
batchExecute
执行批量 SQL 操作。
METHODS
getAttrMembers($attrTypes, $dataObj)
获取数据对象的属性成员。
参数: - $attrTypes: 属性类型的哈希引用 - $dataObj: 数据对象
返回值:属性成员的哈希引用,或在列表上下文中返回 ($attrMembers, $max, $min)
parseColumnMap($columnMap)
解析列映射。
参数: - $columnMap: 列映射的数组引用
返回值:包含单个属性、列表属性和属性类型的三个哈希引用
batchInsert($columnMap, $tableName, $dataObjs)
执行批量插入操作。
参数: - $columnMap: 列映射的数组引用 - $tableName: 要插入数据的表名 - $dataObjs: 要插入的数据对象的哈希引用或数组引用
返回值:无
EXAMPLES
定义使用该角色的类
package MyNetdiscoDB;
use Moose;
with 'PDK::DBI::Role';
sub clone {
my $self = shift;
return __PACKAGE__->new(
map { $_ => $self->$_ } qw(dsn user password)
);
}
sub batchExecute {
my ($self, $params, $sql) = @_;
# 实现批量执行逻辑
}
使用 batchInsert 方法
my $db = MyNetdiscoDB->new(
dsn => 'dbi:mysql:database=Netdisco;host=localhost',
user => 'username',
password => 'password'
);
my $columnMap = ['id', 'name', 'ip_addresses|@'];
my $tableName = 'Netdisco_rules';
my $dataObjs = [
{ id => 1, name => 'Rule1', ip_addresses => ['192.168.1.1', '192.168.1.2'] },
{ id => 2, name => 'Rule2', ip_addresses => ['10.0.0.1', '10.0.0.2'] }
];
$db->batchInsert($columnMap, $tableName, $dataObjs);
SEE ALSO
AUTHOR
WENWU YAN <968828@gmail.com>
LICENSE AND COPYRIGHT
Copyright (C) 2024 WENWU YAN
This program is free software; you can redistribute it and/or modify it under the terms of either: the GNU General Public License as published by the Free Software Foundation; or the Artistic License.
See http://dev.perl.org/licenses/ for more information.