NAME
PDK::DBI::Mysql - MySQL 数据库操作类
SYNOPSIS
use PDK::DBI::Mysql;
my $db = PDK::DBI::Mysql->new(
host => '127.0.0.1',
port => 3306,
dbname => 'testdb',
user => 'root',
password => 'secret',
);
# 插入数据
$db->insert('users', { name => 'alice', age => 20 });
# 查询数据
my $rows = $db->select(table => 'users')->all;
# 批量插入
my $params = [
[1, 'bob'],
[2, 'charlie'],
];
$db->batchExecute($params, 'INSERT INTO users(id, name) VALUES (?, ?)');
DESCRIPTION
该模块基于 DBIx::Custom 封装,继承 PDK::DBI::Role, 提供了 MySQL 数据库的连接、批量执行、事务管理等功能。
对常见的 insert
、update
、delete
、execute
方法进行了事务封装, 执行成功后会自动提交,出错时自动回滚并抛出异常。
ATTRIBUTES
- dsn
-
数据库连接字符串,例如:
DBI:mysql:database=test;host=localhost;port=3306
- user
-
数据库用户名。
- password
-
数据库密码。
- host
-
主机名。如果未提供 dsn,可以通过 host/port/dbname 自动拼接。
- port
-
端口号,默认 3306。
- dbname
-
数据库名。
- option
-
哈希引用,数据库连接选项。 默认值为:
{ AutoCommit => 0, RaiseError => 1, PrintError => 0, }
- dbi
-
DBIx::Custom
对象。 提供select
、update
、insert
、delete
、execute
等方法的委托调用。
METHODS
clone()
克隆当前数据库对象,复制其连接参数,返回新对象。
batchExecute(\@params, $sql)
批量执行 SQL 语句。 内部调用 _rawExecute
,适合大批量插入或复杂 SQL 的执行。
_rawExecute(\@params, $sql)
低层批量执行方法。 每 5000 条数据提交一次事务,循环结束后会提交剩余未提交的记录。
disconnect()
断开数据库连接。
reconnect()
重新建立数据库连接。 等价于先执行 disconnect
,再调用内部的 _buildDbi
。
_buildDbi()
内部方法,用于构建 DBIx::Custom
对象。 会根据配置生成数据库连接,并应用默认或用户自定义的选项。 在 MySQL 下,标识符会使用反引号进行引用。
ERROR HANDLING
所有数据库操作均在事务中执行,出错时会自动回滚。
执行失败时,会抛出 Carp::croak 异常,并包含错误信息。
EXAMPLES
use PDK::DBI::Mysql;
my $db = PDK::DBI::Mysql->new(
host => '127.0.0.1',
dbname => 'testdb',
user => 'root',
password => 'secret',
);
eval {
$db->insert('users', { name => 'alice', age => 20 });
};
if ($@) {
warn "数据库操作失败: $@";
}
AUTHOR
WENWU YAN <968828@gmail.com>
LICENSE AND COPYRIGHT
This software is licensed under the same terms as Perl itself.