我有一个驻留在多个方法中的查询,每个方法(查询)可以包含多个参数.我正在尝试减少文件大小和行数,使其更易于维护.以下是这样的事件:
$sql_update = qq { UPDATE database.table SET column = 'UPDATE!' WHERE id = ? }; $sth_update = $dbh->prepare($sql_update); if ($dbh->err) { my $error = "Could not prepare statement. Error: ". $dbh->errstr ." Exiting at line " . __LINE__; print "$error\n"; die; } $sth_rnupdate->execute($parameter); if ($dbh->err) { my $error = "Could not execute statement. Error: ". $dbh->errstr ." Exiting at line " . __LINE__; print "$error\n"; die; }
这仅是一个示例,然而,存在各种其他选择示例,其仅包含要传递的一个参数,但是也存在具有两个或更多个参数的一些参数.我想我只是想知道是否可以将这一切封装到一个函数/方法中,传入一个参数数组,如何将参数填充到execute()函数中?
解决方法
如果行数和可维护代码是您唯一的目标,那么您最好的选择是使用几个可用的精细ORM框架/库中的任何一个.
Class::DBI和
DBIx::Class是两个很好的起点.为了以防万一,你担心花费额外的时间来学习这些模块 – 不要:我只花了一个下午才开始并提高工作效率.以Class :: DBI为例,您的示例只是一行:
Table->retrieve(id => $parameter)->column('UPDATE!')->update;
这些框架唯一的缺点(如果是这样)是非常复杂的sql语句需要编写自定义方法学习,这可能需要一些额外的时间(不要太多)来解决.
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。