以下は、ORマッパーを使用しないケースです
設定ファイル - development.pl
use File::Spec; use File::Basename qw(dirname); my $basedir = File::Spec->rel2abs(File::Spec->catdir(dirname(__FILE__), '..')); my $dbpath = File::Spec->catfile($basedir, 'db', 'development.db'); +{ 'DBI' => ["dbi:mysql:host=localhost;port=3306;database=test", # "dbi:mysql:database=test", #このDSNの書式でもOK # "dbi:mysql:dbname=test", #このDSNの書式でもOK 'root', 'ないしょ', +{ mysql_enable_utf8 => 1, } ], };
以下は、これまで使用していたDBI接続の参考 - config.yaml
db: host: localhost port: 3306 db_name: xing db_user: ないしょ db_pass: ないしょ db_opt: AutoCommit: 0 mysql_enable_utf8: 1 client_encoding: utf8
設定ファイル - DB , DBI クラス
Amon2::DBIは変更していませんので、これまで使用していたDBI接続の参考を以下に記載します。
package Xing::DBI; use strict; use utf8; use Xing::Config; use base qw(DBI); use Data::Dumper; sub connect { my ($class) = @_; my $conf = Xing::Config->get_config(); my $db = "DBI:mysql:database=$conf->{db}->{db_name};host=$conf->{db}->{host}"; my $dbh = DBI->connect($db, $conf->{db}->{db_user}, $conf->{db}->{db_pass}, $conf->{db}->{db_opt}); $dbh->do("SET NAMES $conf->{db}->{client_encoding}") or die "cannot set encoding"; return $dbh; } 1; __END__
利用時...
package TestAmon2App::Web::Dispatcher; use strict; use warnings; use utf8; use Amon2::Web::Dispatcher::RouterBoom; use Amon2::DBI; use Data::Dumper; any '/' => sub { my ($c) = @_; ## ココ my $dbh = Amon2::DBI->connect($c->config->{DBI}->[0]); my $sth = $dbh->prepare("select * from user"); $sth->execute(); while( my $row = $sth->fetchrow_hashref() ){ print STDERR Dumper($row); } my $counter = $c->session->get('counter') || 0; $counter++; $c->session->set('counter' => $counter); return $c->render('index.tx', { counter => $counter, }); ## ココ $dbh->commit(); $dbh->disconnect(); }; 1;