| ... | ... |
@@ -8,8 +8,8 @@ use base 'Object::Simple'; |
| 8 | 8 |
use Carp 'croak'; |
| 9 | 9 |
use DBI; |
| 10 | 10 |
use DBIx::Custom::Result; |
| 11 |
-use DBIx::Custom::QueryBuilder; |
|
| 12 | 11 |
use DBIx::Custom::Query; |
| 12 |
+use DBIx::Custom::QueryBuilder; |
|
| 13 | 13 |
use Encode qw/encode_utf8 decode_utf8/; |
| 14 | 14 |
|
| 15 | 15 |
__PACKAGE__->attr('dbh');
|
| ... | ... |
@@ -457,10 +457,15 @@ our $VERSION = '0.1605'; |
| 457 | 457 |
This module is not stable. Method name and implementations will be changed. |
| 458 | 458 |
|
| 459 | 459 |
=head1 SYNOPSYS |
| 460 |
- |
|
| 460 |
+ |
|
| 461 |
+Connect to database. |
|
| 462 |
+ |
|
| 461 | 463 |
# Connect |
| 462 | 464 |
my $dbi = DBIx::Custom->connect(data_source => "dbi:mysql:database=books", |
| 463 | 465 |
user => 'ken', password => '!LFKD%$&'); |
| 466 |
+ |
|
| 467 |
+Insert, update, delete statement. |
|
| 468 |
+ |
|
| 464 | 469 |
# Insert |
| 465 | 470 |
$dbi->insert(table => 'books', |
| 466 | 471 |
param => {title => 'perl', author => 'Ken'},
|
| ... | ... |
@@ -484,7 +489,9 @@ This module is not stable. Method name and implementations will be changed. |
| 484 | 489 |
|
| 485 | 490 |
# Delete all |
| 486 | 491 |
$dbi->delete_all(table => 'books'); |
| 487 |
- |
|
| 492 |
+ |
|
| 493 |
+Select statement. |
|
| 494 |
+ |
|
| 488 | 495 |
# Select |
| 489 | 496 |
my $result = $dbi->select(table => 'books'); |
| 490 | 497 |
|
| ... | ... |
@@ -503,8 +510,10 @@ This module is not stable. Method name and implementations will be changed. |
| 503 | 510 |
column => ['books.name as book_name'] |
| 504 | 511 |
relation => {'books.id' => 'rental.book_id'}
|
| 505 | 512 |
); |
| 506 |
- |
|
| 507 |
- # Execute SQL |
|
| 513 |
+ |
|
| 514 |
+Execute SQL source. |
|
| 515 |
+ |
|
| 516 |
+ # Execute from SQL source |
|
| 508 | 517 |
$dbi->execute("select title from books");
|
| 509 | 518 |
|
| 510 | 519 |
# Execute SQL with parameters and filter |
| ... | ... |
@@ -517,11 +526,18 @@ This module is not stable. Method name and implementations will be changed. |
| 517 | 526 |
"select id from books where {= author} && {like title}"
|
| 518 | 527 |
); |
| 519 | 528 |
$dbi->execute($query, param => {author => 'ken', title => '%Perl%'})
|
| 520 |
- |
|
| 529 |
+ |
|
| 530 |
+More features. |
|
| 531 |
+ |
|
| 521 | 532 |
# Default filter |
| 522 | 533 |
$dbi->default_bind_filter('encode_utf8');
|
| 523 | 534 |
$dbi->default_fetch_filter('decode_utf8');
|
| 524 |
- |
|
| 535 |
+ |
|
| 536 |
+ # Get DBI object |
|
| 537 |
+ my $dbh = $dbi->dbh; |
|
| 538 |
+ |
|
| 539 |
+Fetch row. |
|
| 540 |
+ |
|
| 525 | 541 |
# Fetch |
| 526 | 542 |
while (my $row = $result->fetch) {
|
| 527 | 543 |
# ... |
| ... | ... |
@@ -532,8 +548,6 @@ This module is not stable. Method name and implementations will be changed. |
| 532 | 548 |
|
| 533 | 549 |
} |
| 534 | 550 |
|
| 535 |
- # Get DBI object |
|
| 536 |
- my $dbh = $dbi->dbh; |
|
| 537 | 551 |
|
| 538 | 552 |
=head1 DESCRIPTION |
| 539 | 553 |
|
| ... | ... |
@@ -574,32 +588,31 @@ Provide suger methods, such as insert(), update(), delete(), and select(). |
| 574 | 588 |
my $user = $dbi->user; |
| 575 | 589 |
$dbi = $dbi->user('Ken');
|
| 576 | 590 |
|
| 577 |
-Database user name. |
|
| 578 |
-This is used for connect(). |
|
| 591 |
+User name. |
|
| 592 |
+C<connect()> method use this value to connect the database. |
|
| 579 | 593 |
|
| 580 | 594 |
=head2 C<password> |
| 581 | 595 |
|
| 582 | 596 |
my $password = $dbi->password; |
| 583 | 597 |
$dbi = $dbi->password('lkj&le`@s');
|
| 584 | 598 |
|
| 585 |
-Database password. |
|
| 586 |
-This is used for connect(). |
|
| 599 |
+Password. |
|
| 600 |
+C<connect()> method use this value to connect the database. |
|
| 587 | 601 |
|
| 588 | 602 |
=head2 C<data_source> |
| 589 | 603 |
|
| 590 | 604 |
my $data_source = $dbi->data_source; |
| 591 |
- $dbi = $dbi->data_source("dbi:mysql:dbname=$database");
|
|
| 605 |
+ $dbi = $dbi->data_source("DBI:mysql:database=dbname");
|
|
| 592 | 606 |
|
| 593 |
-Database data source. |
|
| 594 |
-This is used for connect(). |
|
| 607 |
+Data source. |
|
| 608 |
+C<connect()> method use this value to connect the database. |
|
| 595 | 609 |
|
| 596 | 610 |
=head2 C<dbh> |
| 597 | 611 |
|
| 598 | 612 |
my $dbh = $dbi->dbh; |
| 599 | 613 |
$dbi = $dbi->dbh($dbh); |
| 600 | 614 |
|
| 601 |
-Database handle. This is a L<DBI> object. |
|
| 602 |
-You can call all methods of L<DBI> |
|
| 615 |
+L<DBI> object. You can call all methods of L<DBI>. |
|
| 603 | 616 |
|
| 604 | 617 |
my $sth = $dbi->dbh->prepare("...");
|
| 605 | 618 |
my $errstr = $dbi->dbh->errstr; |
| ... | ... |
@@ -615,22 +628,19 @@ You can call all methods of L<DBI> |
| 615 | 628 |
Filter functions. |
| 616 | 629 |
By default, "encode_utf8" and "decode_utf8" is registered. |
| 617 | 630 |
|
| 618 |
- $encode_utf8 = $dbi->filters->{encode_utf8};
|
|
| 619 |
- $decode_utf8 = $dbi->filters->{decode_utf8};
|
|
| 620 |
- |
|
| 621 | 631 |
=head2 C<default_bind_filter> |
| 622 | 632 |
|
| 623 | 633 |
my $default_bind_filter = $dbi->default_bind_filter |
| 624 | 634 |
$dbi = $dbi->default_bind_filter('encode_utf8');
|
| 625 | 635 |
|
| 626 |
-Default filter for value binding |
|
| 636 |
+Default filter when parameter binding is executed. |
|
| 627 | 637 |
|
| 628 | 638 |
=head2 C<default_fetch_filter> |
| 629 | 639 |
|
| 630 | 640 |
my $default_fetch_filter = $dbi->default_fetch_filter; |
| 631 | 641 |
$dbi = $dbi->default_fetch_filter('decode_utf8');
|
| 632 | 642 |
|
| 633 |
-Default filter for fetching. |
|
| 643 |
+Default filter when row is fetched. |
|
| 634 | 644 |
|
| 635 | 645 |
=head2 C<result_class> |
| 636 | 646 |
|
| ... | ... |
@@ -647,28 +657,60 @@ Default to L<DBIx::Custom::Result>. |
| 647 | 657 |
|
| 648 | 658 |
SQL builder. sql_builder must be |
| 649 | 659 |
the instance of L<DBIx::Custom::QueryBuilder> subclass |
| 650 |
-Default to DBIx::Custom::QueryBuilder. |
|
| 660 |
+Default to L<DBIx::Custom::QueryBuilder>. |
|
| 661 |
+ |
|
| 662 |
+=head2 C<cache> |
|
| 663 |
+ |
|
| 664 |
+ my $cache = $dbi->cache; |
|
| 665 |
+ $dbi = $dbi->cache(1); |
|
| 666 |
+ |
|
| 667 |
+Enable cache of the query after parsing SQL source. |
|
| 668 |
+Default to 1. |
|
| 669 |
+ |
|
| 670 |
+=head2 C<cache_method> |
|
| 671 |
+ |
|
| 672 |
+ $dbi = $dbi->cache_method(\&cache_method); |
|
| 673 |
+ $cache_method = $dbi->cache_method |
|
| 674 |
+ |
|
| 675 |
+Method for cache. |
|
| 676 |
+ |
|
| 677 |
+B<Example:> |
|
| 678 |
+ |
|
| 679 |
+ $dbi->cache_method( |
|
| 680 |
+ sub {
|
|
| 681 |
+ my $self = shift; |
|
| 682 |
+ |
|
| 683 |
+ $self->{_cached} ||= {};
|
|
| 684 |
+ |
|
| 685 |
+ if (@_ > 1) {
|
|
| 686 |
+ $self->{_cached}{$_[0]} = $_[1]
|
|
| 687 |
+ } |
|
| 688 |
+ else {
|
|
| 689 |
+ return $self->{_cached}{$_[0]}
|
|
| 690 |
+ } |
|
| 691 |
+ } |
|
| 692 |
+ ); |
|
| 651 | 693 |
|
| 652 | 694 |
=head1 METHODS |
| 653 | 695 |
|
| 654 |
-This class is L<Object::Simple> subclass. |
|
| 655 |
-You can use all methods of L<Object::Simple> |
|
| 696 |
+L<DBIx::Custom> inherits all methods from L<Object::Simple> |
|
| 697 |
+and implements the following new ones. |
|
| 656 | 698 |
|
| 657 | 699 |
=head2 C<connect> |
| 658 | 700 |
|
| 659 |
- my $dbi = DBIx::Custom->connect(data_source => "dbi:mysql:database=books", |
|
| 701 |
+ my $dbi = DBIx::Custom->connect(data_source => "dbi:mysql:database=dbname", |
|
| 660 | 702 |
user => 'ken', password => '!LFKD%$&'); |
| 661 | 703 |
|
| 662 |
-Connect to database. |
|
| 663 |
-"AutoCommit" and "RaiseError" option is true, |
|
| 664 |
-and "PrintError" option is false by default. |
|
| 704 |
+Create a new L<DBIx::Custom> object and connect to the database. |
|
| 705 |
+By default, "AutoCommit" and "RaiseError" option is true, |
|
| 706 |
+and "PrintError" option is false. |
|
| 665 | 707 |
|
| 666 | 708 |
=head2 C<insert> |
| 667 | 709 |
|
| 668 |
- $affected = $dbi->insert(table => $table, |
|
| 669 |
- param => \%param, |
|
| 670 |
- append => $append, |
|
| 671 |
- filter => \%filter); |
|
| 710 |
+ $dbi->insert(table => $table, |
|
| 711 |
+ param => \%param, |
|
| 712 |
+ append => $append, |
|
| 713 |
+ filter => \%filter); |
|
| 672 | 714 |
|
| 673 | 715 |
Insert row. |
| 674 | 716 |
Retrun value is the count of affected rows. |
| ... | ... |
@@ -682,11 +724,11 @@ B<Example:> |
| 682 | 724 |
|
| 683 | 725 |
=head2 C<update> |
| 684 | 726 |
|
| 685 |
- $affected = $dbi->update(table => $table, |
|
| 686 |
- param => \%params, |
|
| 687 |
- where => \%where, |
|
| 688 |
- append => $append, |
|
| 689 |
- filter => \%filter) |
|
| 727 |
+ $dbi->update(table => $table, |
|
| 728 |
+ param => \%params, |
|
| 729 |
+ where => \%where, |
|
| 730 |
+ append => $append, |
|
| 731 |
+ filter => \%filter) |
|
| 690 | 732 |
|
| 691 | 733 |
Update rows. |
| 692 | 734 |
Retrun value is the count of affected rows. |
| ... | ... |
@@ -701,10 +743,10 @@ B<Example:> |
| 701 | 743 |
|
| 702 | 744 |
=head2 C<update_all> |
| 703 | 745 |
|
| 704 |
- $affected = $dbi->update_all(table => $table, |
|
| 705 |
- param => \%params, |
|
| 706 |
- filter => \%filter, |
|
| 707 |
- append => $append); |
|
| 746 |
+ $dbi->update_all(table => $table, |
|
| 747 |
+ param => \%params, |
|
| 748 |
+ filter => \%filter, |
|
| 749 |
+ append => $append); |
|
| 708 | 750 |
|
| 709 | 751 |
Update all rows. |
| 710 | 752 |
Retrun value is the count of affected rows. |
| ... | ... |
@@ -717,10 +759,10 @@ B<Example:> |
| 717 | 759 |
|
| 718 | 760 |
=head2 C<delete> |
| 719 | 761 |
|
| 720 |
- $affected = $dbi->delete(table => $table, |
|
| 721 |
- where => \%where, |
|
| 722 |
- append => $append, |
|
| 723 |
- filter => \%filter); |
|
| 762 |
+ $dbi->delete(table => $table, |
|
| 763 |
+ where => \%where, |
|
| 764 |
+ append => $append, |
|
| 765 |
+ filter => \%filter); |
|
| 724 | 766 |
|
| 725 | 767 |
Delete rows. |
| 726 | 768 |
Retrun value is the count of affected rows. |
| ... | ... |
@@ -734,7 +776,7 @@ B<Example:> |
| 734 | 776 |
|
| 735 | 777 |
=head2 C<delete_all> |
| 736 | 778 |
|
| 737 |
- $affected = $dbi->delete_all(table => $table); |
|
| 779 |
+ $dbi->delete_all(table => $table); |
|
| 738 | 780 |
|
| 739 | 781 |
Delete all rows. |
| 740 | 782 |
Retrun value is the count of affected rows. |
| ... | ... |
@@ -745,12 +787,12 @@ B<Example:> |
| 745 | 787 |
|
| 746 | 788 |
=head2 C<select> |
| 747 | 789 |
|
| 748 |
- $result = $dbi->select(table => $table, |
|
| 749 |
- column => [@column], |
|
| 750 |
- where => \%where, |
|
| 751 |
- append => $append, |
|
| 752 |
- relation => \%relation, |
|
| 753 |
- filter => \%filter); |
|
| 790 |
+ my $result = $dbi->select(table => $table, |
|
| 791 |
+ column => [@column], |
|
| 792 |
+ where => \%where, |
|
| 793 |
+ append => $append, |
|
| 794 |
+ relation => \%relation, |
|
| 795 |
+ filter => \%filter); |
|
| 754 | 796 |
|
| 755 | 797 |
Select rows. |
| 756 | 798 |
Return value is the instance of L<DBIx::Custom::Result>. |
| ... | ... |
@@ -758,13 +800,13 @@ Return value is the instance of L<DBIx::Custom::Result>. |
| 758 | 800 |
B<Example:> |
| 759 | 801 |
|
| 760 | 802 |
# select * from books; |
| 761 |
- $result = $dbi->select(table => 'books'); |
|
| 803 |
+ my $result = $dbi->select(table => 'books'); |
|
| 762 | 804 |
|
| 763 | 805 |
# select * from books where title = 'Perl'; |
| 764 |
- $result = $dbi->select(table => 'books', where => {title => 1});
|
|
| 806 |
+ my $result = $dbi->select(table => 'books', where => {title => 1});
|
|
| 765 | 807 |
|
| 766 | 808 |
# select title, author from books where id = 1 for update; |
| 767 |
- $result = $dbi->select( |
|
| 809 |
+ my $result = $dbi->select( |
|
| 768 | 810 |
table => 'books', |
| 769 | 811 |
column => ['title', 'author'], |
| 770 | 812 |
where => {id => 1},
|
| ... | ... |
@@ -790,8 +832,8 @@ using L<DBIx::Custom::QueryBuilder>. |
| 790 | 832 |
|
| 791 | 833 |
=head2 C<execute> |
| 792 | 834 |
|
| 793 |
- $result = $dbi->execute($query, param => $params, filter => \%filter); |
|
| 794 |
- $result = $dbi->execute($source, param => $params, filter => \%filter); |
|
| 835 |
+ my $result = $dbi->execute($query, param => $params, filter => \%filter); |
|
| 836 |
+ my $result = $dbi->execute($source, param => $params, filter => \%filter); |
|
| 795 | 837 |
|
| 796 | 838 |
Execute the instace of L<DBIx::Custom::Query> or |
| 797 | 839 |
the string written by SQL template. |
| ... | ... |
@@ -799,7 +841,7 @@ Return value is the instance of L<DBIx::Custom::Result>. |
| 799 | 841 |
|
| 800 | 842 |
B<Example:> |
| 801 | 843 |
|
| 802 |
- $result = $dbi->execute("select * from authors where {= name} and {= age}",
|
|
| 844 |
+ my $result = $dbi->execute("select * from authors where {= name} and {= age}",
|
|
| 803 | 845 |
param => {name => 'taro', age => 19});
|
| 804 | 846 |
|
| 805 | 847 |
while (my $row = $result->fetch) {
|
| ... | ... |
@@ -832,38 +874,6 @@ B<Example:> |
| 832 | 874 |
} |
| 833 | 875 |
); |
| 834 | 876 |
|
| 835 |
-=head2 C<cache> |
|
| 836 |
- |
|
| 837 |
- $dbi = $dbi->cache(1); |
|
| 838 |
- $cache = $dbi->cache; |
|
| 839 |
- |
|
| 840 |
-Cache the result of parsing SQL template. |
|
| 841 |
-Default to 1. |
|
| 842 |
- |
|
| 843 |
-=head2 C<cache_method> |
|
| 844 |
- |
|
| 845 |
- $dbi = $dbi->cache_method(\&cache_method); |
|
| 846 |
- $cache_method = $dbi->cache_method |
|
| 847 |
- |
|
| 848 |
-Method for cache. |
|
| 849 |
- |
|
| 850 |
-B<Example:> |
|
| 851 |
- |
|
| 852 |
- $dbi->cache_method( |
|
| 853 |
- sub {
|
|
| 854 |
- my $self = shift; |
|
| 855 |
- |
|
| 856 |
- $self->{_cached} ||= {};
|
|
| 857 |
- |
|
| 858 |
- if (@_ > 1) {
|
|
| 859 |
- $self->{_cached}{$_[0]} = $_[1]
|
|
| 860 |
- } |
|
| 861 |
- else {
|
|
| 862 |
- return $self->{_cached}{$_[0]}
|
|
| 863 |
- } |
|
| 864 |
- } |
|
| 865 |
- ); |
|
| 866 |
- |
|
| 867 | 877 |
=head1 BUGS |
| 868 | 878 |
|
| 869 | 879 |
Please tell me bugs. |