Showing 3 changed files with 255 additions and 245 deletions
+2
Changes
... ...
@@ -1,3 +1,5 @@
1
+0.1644
2
+  update pod
1 3
 0.1643
2 4
   add experimental selection option to select()
3 5
   add experimental table tag
+129 -135
lib/DBIx/Custom/Guide.pod
... ...
@@ -341,6 +341,20 @@ Following SQL is executed.
341 341
 C<appned> is also used at C<insert()>, C<update()>, C<update_all()>
342 342
 C<delete()>, C<delete_all()>, and C<select()>.
343 343
 
344
+Instead of C<column> and C<table>,
345
+you can use C<selection>.
346
+This is used to specify column names and table names at once
347
+
348
+    my $selection = <<"EOS";
349
+    title, author, company_name
350
+    from book inner join company on book.company_id = company.id
351
+    EOS
352
+
353
+    $dbi->select(selection => $selection);
354
+
355
+Note that you can't use where clause in C<selection>.
356
+use clause like "inner join".
357
+
344 358
 =head3 C<execute()> SQL
345 359
 
346 360
 use C<execute()> to execute SQL
... ...
@@ -562,6 +576,18 @@ You can also use column name which contains table name.
562 576
         where => {'book.issue_date' => $tp}
563 577
     );
564 578
 
579
+In fetching, Filter is effective if you use "TABLE__COLUMN" as column name.
580
+
581
+    my $result = $dbi->execute(
582
+       "select issue_date as book__issue_date from book");
583
+
584
+You can apply C<end> filter execute after C<in> filter.
585
+
586
+    $dbi->apply_filter('book',
587
+        issue_date => {out => 'tp_to_date', in => 'date_to_tp',
588
+                       end => 'tp_to_displaydate'},
589
+    );
590
+
565 591
 =head3 Individual filter C<filter>
566 592
 
567 593
 You can apply individual filter .
... ...
@@ -661,9 +687,6 @@ If you want to use these, escape it by '\';
661 687
 
662 688
 \ is perl's escape character, you need two \.
663 689
 
664
-C<\>���̂�Perl�̃G�X�P�[�v�����ł��̂ŁA
665
-C<\>�͓�•K�v�ɂȂ�܂��B
666
-
667 690
 Tag is expanded before executing SQL.
668 691
 
669 692
     select * from book where title = ? and author like ?;
... ...
@@ -683,10 +706,9 @@ You can specify C<filter()> at C<execute()>.
683 706
 
684 707
 Note that at C<execute()> the filter applied by C<apply_filter()>
685 708
 don't has effective to columns.
686
-You need specify C<table> to have effective.
709
+You have to use C<table> tag in SQL
687 710
 
688
-    $dbi->execute($sql, param => {title => 'Perl', author => '%Ken%'}
689
-                  table => ['book']);
711
+    my $sql = "select * from {table book} where {= author} and {like title};"
690 712
 
691 713
 =head3 Tag list
692 714
 
... ...
@@ -694,6 +716,14 @@ L<DBIx::Custom>
694 716
 
695 717
 The following tag is available.
696 718
 
719
+=head4 C<table>
720
+
721
+    {table NAME} -> NAME
722
+
723
+This is used to specify table name in SQL.
724
+If you specify table name, Filtering by 
725
+C<apply_filter()> is effective.
726
+
697 727
 =head4 C<?>
698 728
 
699 729
     {? NAME}    ->   ?
... ...
@@ -950,77 +980,56 @@ C<execute()>
950 980
 
951 981
     $dbi->execute($sql, param => $param);
952 982
 
953
-=head2 7. �e�[�u�����f��
954
-
955
-=head3 �e�[�u���I�u�W�F�N�g�̍쐬 C<table()>
983
+=head2 7. Table object
956 984
 
957
-L<DBIx::Custom>�̓��W�b�N�Ƃ��ăe�[�u���𒆐S�ɂ�����
958
-���f���̍쐬��x�����܂��B
985
+=head3 Create table object C<table()>
959 986
 
960
-�A�v���P�[�V�����̃��W�b�N��L�q����Ƃ��ɁA���̃��W�b�N��
961
-�f�[�^�x�[�X�̃e�[�u���ɂ����邱�Ƃ́ARDBMS�𗘗p����
962
-���f���ł���΁A�R�[�h�̏d�����Ȃ�
963
-�킩��₷����̂ɂȂ�܂��B
964
-
965
-�e�[�u���I�u�W�F�N�g�𐶐�����ɂ�C<table()>��g�p���܂��B
987
+You can create table object to access table in database.
988
+use C<tabel()> to create table object.
966 989
 
967 990
     my $table = $dbi->table('book');
968 991
 
969
-��ۂɃf�[�^�x�[�X�Ƀe�[�u���͑��݂��Ă���K�v�͂���܂���B
970
-����͉��z�I�ȃe�[�u���I�u�W�F�N�g�ł��B�����
971
-L<DBIx::Customm::Table>�I�u�W�F�N�g�ɂȂ�܂��B
972
-
973
-�e�[�u���I�u�W�F�N�g�����C<insert()>�AC<update()>�AC<update_all()>�A
974
-C<delete()>�AC<delete_all()>�AC<select()>�Ȃǂ̃��\�b�h�Ăяo�����Ƃ��ł��܂��B
975
-L<DBIx::Custom>�ƈقȂ�Ƃ���́AC<table>��K������w�肷��K�v��
976
-�Ȃ��Ƃ������Ƃł��B
992
+Return value is L<DBIx::Custom::Table>.
993
+From table object, you can call C<insert()>, C<update()>, C<update_all()>�A
994
+C<delete()>, C<delete_all()>, C<select()>.
995
+You don't have to specify table name.
977 996
 
978 997
     $table->insert(param => $param);
979 998
 
980
-C<table���̒l�͎����I��book�ɐݒ肳��܂��B
981
-
982
-�܂��e�[�u���I�u�W�F�N�g�ɂ͓Ǝ��̃��\�b�h��lj���邱�Ƃ��ł��܂��B
999
+You can add any method to table object.
983 1000
 
984 1001
     $table->method(
985 1002
         register => sub {
986 1003
             my $self = shift;
987 1004
             my $table_name = $self->name;
988
-            # something
1005
+            # ...
989 1006
         },
990
-        list => sub {
991
-            my $self = shift;
992
-            my $table_name = $self->name;
993
-            # something
994
-        }
1007
+        list => sub { ... }
995 1008
     );
996 1009
 
997
-���\�b�h�ɓn���������L<DBIx::Custom::Table>�I�u�W�F�N�g�ł��B
998
-C<name()>��g�p���āA�e�[�u������擾���邱�Ƃ��ł��܂��B
1010
+You can get table name by C<name()>.
999 1011
 
1000
-���̂悤�ɂ��ēo�^�������\�b�h�͒��ڌĂяo�����Ƃ��ł��܂��B
1012
+You can call these method from table object.
1001 1013
 
1002 1014
     $table->register(...);
1003 1015
     $table->list(...);
1004 1016
 
1005
-�܂��e�[�u����p�̃��\�b�h��I�[�o�[���C�h���č쐬���邱�Ƃ�ł��܂��B
1017
+=head2 Use L<DBIx::Custom> and <DBI> methods
1006 1018
 
1007
-    $table->method(
1008
-        insert => sub {
1009
-            my $self = shift;
1010
-            
1011
-            $self->base_insert(...);
1012
-            
1013
-            # something
1014
-        }
1015
-    );
1019
+You can call all methods of L<DBIx::Custom> and L<DBI>
1016 1020
 
1017
-��Ƃ�Ƒ��݂��Ă���C<insert()>��ĂԂɂ�C<base_$method>�Ƃ��܂��BL<DBIx::Custom::Table>
1018
-�̃I�[�o�[���C�h�̋@�\�͊ȈՓI�Ȃ�̂ł����A�ƂĂ�֗��ł��B
1021
+    # DBIx::Custom method
1022
+    $table->execute($sql);
1023
+    
1024
+    # DBI method
1025
+    $table->begin_work;
1026
+    $table->commit;
1019 1027
 
1020
-=head2 �e�[�u���ŋ��L�̃��\�b�h�̓o�^
1028
+=head2 Add table shared method
1021 1029
 
1022
-���ׂẴe�[�u���Ń��\�b�h��L����ɂ�C<table>���\�b�h�Ńe�[�u����쐬����O�ɁA
1023
-C<base_table>�Ƀ��\�b�h��o�^���Ă����܂��B
1030
+To share methods in all tables,
1031
+add method to base table.
1032
+You can get base table by C<base_table()>.
1024 1033
 
1025 1034
     $dbi->base_table->method(
1026 1035
         count => sub {
... ...
@@ -1029,19 +1038,27 @@ C<base_table>
1029 1038
         }
1030 1039
     );
1031 1040
 
1032
-�܂��e�[�u�������L<DBIx::Custom>��L<DBI>�̂��ׂẴ��\�b�h��Ăяo�����Ƃ��ł��܂��B
1041
+This method is used by all talbes.
1033 1042
 
1034
-    # DBIx::Custom method
1035
-    $table->execute($sql);
1036
-    
1037
-    # DBI method
1038
-    $table->begin_work;
1039
-    $table->commit;
1043
+    $dbi->table('book')->count(...);
1040 1044
 
1041
-=head2 ��ʓI�ȃ��f���̍\��
1045
+Even if same method name is added to table,
1046
+You can use base table method by C<base_METHOD()>.
1042 1047
 
1043
-��ʓI�ɂ́AL<DBIx::Custom>��p�����ăR���X�g���N�^�̒��ɁA���f����쐬
1044
-����̂��悢�ł��傤�B
1048
+    $table->method(
1049
+        count => sub {
1050
+            my $self = shift;
1051
+            
1052
+            $self->base_count(...);
1053
+            
1054
+            # ...
1055
+        }
1056
+    );
1057
+
1058
+=head2 Model example
1059
+
1060
+Generally, it is good to create model in constructor
1061
+in the class extending L<DBIx::Custom>.
1045 1062
 
1046 1063
     package MyDBI;
1047 1064
     
... ...
@@ -1051,82 +1068,63 @@ C<base_table>
1051 1068
         my $self = shift->SUPER::connect(@_);
1052 1069
         
1053 1070
         $self->base_table->method(
1054
-            ... => sub { ... }
1071
+            delete_multi => sub { ... }
1055 1072
         );
1056 1073
         
1057 1074
         $self->table('book')->method(
1058
-            insert_multi => sub { ... },
1059
-            ... => sub { ... }
1075
+            register => sub { ... },
1076
+            remove   => sub { ... },
1060 1077
         );
1061 1078
         
1062 1079
         $self->table('company')->method(
1063
-            ... => sub { ... },
1080
+            register => sub { ... },
1081
+            remove   => sub { ... },
1064 1082
         );
1065 1083
     }
1066 1084
 
1067
-���̂悤�ɂ��Ē�`���Ă����΁A���̂悤�ɗ��p���邱�Ƃ��ł��܂��B
1085
+You can use this class in the following way.
1068 1086
 
1069 1087
     my $dbi = MyDBI->connect(...);
1070
-    $dbi->table('book')->insert_multi(...);
1071
-
1072
-=head2 8. �p�t�H�[�}���X�̉�P
1073
-
1074
-=head3 �N�G���̍쐬
1088
+    $dbi->table('book')->delete_multi(...);
1075 1089
 
1076
-��C<insert()>���\�b�h��g�p���ăC���T�[�g���s�����ꍇ�A
1077
-�K�v�ȃp�t�H�[�}���X�𓾂��Ȃ��ꍇ�����邩����܂���B
1078
-C<insert()>���\�b�h�́ASQL���ƃX�e�[�g�����g�n���h����
1079
-����쐬���邽�߂ł��B
1090
+=head2 8. Improve performance
1080 1091
 
1081
-���̂悤�ȏꍇ�́AC<query>�I�v�V������w�肷�邱�ƂŁA
1082
-�N�G����擾���邱�Ƃ��ł��܂��B
1092
+=head3 Create query
1083 1093
 
1084
-    my $query = $dbi->insert(table => 'book', param => $param, query => 1);
1094
+If you can't get performance, create query by C<query> option.
1095
+For example, many insert is needed.
1085 1096
 
1086
-�܂�C<create_query()>���\�b�h��g��ĔC�ӂ�SQL�̃N�G����쐬
1087
-���邱�Ƃ�ł��܂��B
1088
-
1089
-    my $query = $dbi->create_query(
1090
-        "insert into book {insert_param title author};";
1091
-    );
1097
+    my $params = [
1098
+        {title => 'Perl', author => 'Ken'},
1099
+        {title => 'Good day', author => 'Tom'}
1100
+    ]
1101
+    my $query = $dbi->insert(table => 'book', param => $params->[0], query => 1);
1092 1102
 
1093
-�߂�l��L<DBIx::Custom::Query>�I�u�W�F�N�g�ł��B
1094
-���̃I�u�W�F�N�g��SQL���ƃp�����[�^�o�C���h���̗񖼂�
1095
-�ێ����Ă��܂��B�܂��X�e�[�g�����g�n���h����ێ����Ă��܂��B
1103
+Return value is L<DBIx::Custom::Query> object.
1104
+This query is executed by C<execute()>.
1096 1105
 
1097
-    {
1098
-        sql     => 'insert into book (title, author) values (?, ?);',
1099
-        columns => ['title', 'author'],
1100
-        sth     => $sth
1106
+    foreach my $param (@$params) {
1107
+        $dbi->execute($query, $param);
1101 1108
     }
1102 1109
 
1103
-�N�G���I�u�W�F�N�g��g��ČJ��Ԃ���s����ɂ�C<execute()>��g�p���܂��B
1104
-    
1105
-    my $params = [
1106
-        {title => 'Perl',      author => 'Ken'},
1107
-        {title => 'Good days', author => 'Mike'}
1108
-    ];
1109
-    
1110
-    foreach my $param (@$paramss) {
1111
-        $dbi->execute($query, table => 'book', param => $input);
1112
-    }
1110
+Performance is improved because statement handle is reused
1111
+C<query> option is used in C<insert()>, C<update()>, C<update_all()>,
1112
+C<delete()>, C<delete_all()>.
1113
+
1114
+Note that parameters count is same as method for creating query and C<execute()>.
1113 1115
 
1114
-C<execute>���\�b�h�̑���ɃN�G���I�u�W�F�g��n�����Ƃ��ł��܂��B
1115
-C<insert()>���\�b�h�������ł��B
1116
+You can create query from any SQL by C<create_query()>.
1116 1117
 
1117
-���ӓ_�������‚�����܂��B����̓p�����[�^�̐��͕K�������łȂ��Ă͂Ȃ�Ȃ�
1118
-�Ƃ������Ƃł��B�ŏ���3�‚̃p�����[�^������n�����̂ɁA���̎�s�ł�
1119
-��‚̃p�����[�^��n���Ɨ\��Ȃ����ʂɂȂ�܂��B�����
1120
-���I�ɐ������ꂽSQL�Ɋ܂܂��v���[�X�z���_�̐����قȂ邩��ł��B
1121
-�܂�C<execute()>�ɂ��Ă͎����I�ɂ̓t�B���^���L��ɂȂ�Ȃ��̂ŁA
1122
-C<table>��w�肷��K�v�̂��邱�Ƃɒ��ӂ��Ă��������B
1123
-�{���ɕK�v�ȏꍇ�������p���Ă��������B
1118
+    my $query = $dbi->create_query(
1119
+        "insert into book {insert_param title author};";
1120
+    );
1124 1121
 
1125
-=head2 9. ���̑��̋@�\
1122
+=head2 9. Other features
1126 1123
 
1127
-=head3 ���\�b�h�̓o�^
1124
+=head3 Add method
1128 1125
 
1129
-���\�b�h��o�^����ɂ�C<method()>��g�p���܂��B
1126
+You can add method to L<DBIx::Custom> object.
1127
+use C<method().
1130 1128
 
1131 1129
     $dbi->method(
1132 1130
         update_or_insert => sub {
... ...
@@ -1139,15 +1137,14 @@ C<table>
1139 1137
         }
1140 1138
     );
1141 1139
 
1142
-<method()>�œo�^�������\�b�h��
1143
-L<DBIx::Custom>�I�u�W�F�N�g���璼�ڌĂяo�����Ƃ��ł��܂��B
1140
+You can call these methods from L<DBIx::Custom> object.
1144 1141
 
1145 1142
     $dbi->update_or_insert;
1146 1143
     $dbi->find_or_create;
1147 1144
 
1148
-=head3 ���ʃN���X�̕ύX
1145
+=head3 Change result class
1149 1146
 
1150
-�K�v�Ȃ�Ό��ʃN���X��ύX���邱�Ƃ��ł��܂��B
1147
+You can change result class. By default it is L<DBIx::Custom::Result>.
1151 1148
 
1152 1149
     package MyResult;
1153 1150
     use base 'DBIx::Custom::Result';
... ...
@@ -1165,16 +1162,14 @@ L<DBIx::Custom>
1165 1162
 
1166 1163
 =head3 �L���b�V���O
1167 1164
 
1168
-�^�O�̓W�J���SQL�̓p�t�H�[�}���X�̗��R�̂��߂ɃL���b�V������܂��B
1169
-�����C<chace>�Őݒ�ł��A�f�t�H���g�ł̓L���b�V����s���ݒ�ł��B
1165
+SQL after parsing tag is cached for performance.
1166
+You can set C<cache()>. By default, chaching is true.
1170 1167
 
1171 1168
     $dbi->cache(1);
1172 1169
 
1173
-�L���b�V����@��C<cache_method>�Ƀ��\�b�h��w�肷�邱�Ƃ�
1174
-�ύX���邱�Ƃ��ł��܂��B
1175
-�f�[�^�̕ۑ��Ǝ擾�̂��߂̃��\�b�h���`���܂��B
1176
-
1177
-�f�t�H���g�ł͎��̂悤�Ƀ�������ɃL���b�V����s����̂ɂȂ�Ă��܂��B
1170
+The way to cache is changed by C<cache_method()>.
1171
+Default method is the following one.
1172
+Cache is saved to memory.
1178 1173
 
1179 1174
     $dbi->cache_method(sub {
1180 1175
         sub {
... ...
@@ -1183,28 +1178,27 @@ L<DBIx::Custom>
1183 1178
             $self->{_cached} ||= {};
1184 1179
             
1185 1180
             if (@_ > 1) {
1186
-                # Set
1181
+                # Save cache
1187 1182
                 $self->{_cached}{$_[0]} = $_[1] 
1188 1183
             }
1189 1184
             else {
1190
-                # Get
1185
+                # Get cache
1191 1186
                 return $self->{_cached}{$_[0]}
1192 1187
             }
1193 1188
         }
1194 1189
     });
1195 1190
     
1196
-����L<DBIx::Custom>�I�u�W�F�N�g�ł��B
1197
-����̓^�O�̓W�J�����O��SQL�ł��B
1198
-��O��̓^�O�̓W�J���SQL�ł��B
1199
-
1200
-�����ō쐬����ꍇ�͑�O�����݂����ꍇ�̓L���b�V����ݒ肵�A
1201
-���݂��Ȃ�����ꍇ�̓L���b�V����擾��������
1202
-�����������B
1191
+First argument is L<DBIx::Custom> object.
1192
+Second argument is SQL before parsing.
1193
+Third argument is SQL information after parsing. This is hash reference.
1203 1194
 
1204
-=cut
1195
+If third argument exists, you save cache,
1196
+and if third argument isn't exists, you get chace.
1205 1197
 
1206 1198
 =head1 EXAMPLES
1207 1199
 
1200
+You can see exsamples in the following wiki.
1201
+
1208 1202
 L<DBIx::Custom Wiki|https://github.com/yuki-kimoto/DBIx-Custom/wiki> - Many useful examples
1209 1203
 
1210 1204
 =cut
+124 -110
lib/DBIx/Custom/Guide/Ja.pod
... ...
@@ -348,6 +348,19 @@ C<append>はSQLの末尾に追加される文字列です。
348 348
 またC<append>は、C<select>だけでなくC<insert()>、C<update()>、C<update_all()>
349 349
 C<delete()>、C<delete_all()>、C<select()>で使用することもできます。
350 350
 
351
+C<column>とC<table>を使用する代わりに、C<selection>を使用することも
352
+できます。列名とテーブル名をまとめて指定する場合に利用します。
353
+    
354
+    my $selection = <<"EOS";
355
+    title, author, company_name
356
+    from book inner join company on book.company_id = company.id
357
+    EOS
358
+
359
+    $dbi->select(selection => $selection);
360
+
361
+C<selection>においてはwhere句を利用できないということに注意してください。
362
+"inner join"などの句を利用してください。
363
+
351 364
 =head3 SQLの実行 C<execute()>
352 365
 
353 366
 SQLを実行するにはC<execute()>を使用します。
... ...
@@ -575,6 +588,19 @@ L<Time::Piece>オブジェクトに変換されます。
575 588
         where => {'book.title' => 'Perl', 'book.author' => 'Ken'}
576 589
     );
577 590
 
591
+フェッチを行う場合に"TABLE__COLUMN"という名前を使用した場合もフィルタは
592
+有効になります。
593
+
594
+    my $result = $dbi->execute(
595
+       "select issue_date as book__issue_date from book");
596
+
597
+C<in>フィルタの後に実行されるC<end>フィルタを適用することもできます。
598
+
599
+    $dbi->apply_filter('book',
600
+        issue_date => {out => 'tp_to_date', in => 'date_to_tp',
601
+                       end => 'tp_to_displaydate'},
602
+    );
603
+
578 604
 =head3 個別のフィルタ C<filter>
579 605
 
580 606
 個別にフィルタを適用することもできます。
... ...
@@ -693,13 +719,20 @@ C<execute()>においてもC<filter>を指定することができます。
693 719
 C<execute>ではC<apply_filter()>で適用されたフィルタ
694 720
 は有効ではないということに注意してください。
695 721
 C<apply_filter()>で適用されたフィルタを有効にするには、
696
-C<table>を指定する必要があります。
722
+C<table>タグを利用します。
697 723
 
698
-    $dbi->execute($sql, param => {title => 'Perl', author => '%Ken%'}
699
-                  table => ['book']);
724
+    my $sql = "select * from {table book} where {= author} and {like title};"
700 725
 
701 726
 =head3 タグ一覧
702 727
 
728
+=head4 C<table>
729
+
730
+    {table NAME} -> NAME
731
+
732
+これはSQLの中でテーブル名を指定する場合に利用します。
733
+テーブル名を指定することによって、C<apply_filter()>
734
+によるフィルタリングが有効になります。
735
+
703 736
 =head4 C<?>
704 737
 
705 738
     {? NAME}    ->   ?
... ...
@@ -957,36 +990,25 @@ C<execute()>との連携です。SQLを作成するときに埋め込むこと
957 990
 
958 991
     $dbi->execute($sql, param => $param);
959 992
 
960
-=head2 7. テーブルモデル
993
+=head2 7. テーブルオブジェクト
961 994
 
962 995
 =head3 テーブルオブジェクトの作成 C<table()>
963 996
 
964
-L<DBIx::Custom>はロジックとしてテーブルを中心にすえた
965
-モデルの作成を支援します。
966
-
967
-アプリケーションのロジックを記述するときに、そのロジックを
968
-データベースのテーブルにすえることは、RDBMSを利用する
969
-モデルであれば、コードの重複も少なく
970
-わかりやすいものになります。
997
+データベースのテーブルにアクセスするための
998
+テーブルオブジェクトを作成することができます。
971 999
 
972 1000
 テーブルオブジェクトを生成するにはC<table()>を使用します。
973 1001
 
974 1002
     my $table = $dbi->table('book');
975 1003
 
976
-実際にデータベースにテーブルは存在している必要はありません。
977
-これは仮想的なテーブルオブジェクトです。これは
978
-L<DBIx::Customm::Table>オブジェクトになります。
979
-
1004
+戻り値はL<DBIx::Custom::Table>オブジェクトです。
980 1005
 テーブルオブジェクトからはC<insert()>、C<update()>、C<update_all()>、
981 1006
 C<delete()>、C<delete_all()>、C<select()>などのメソッド呼び出すことができます。
982
-L<DBIx::Custom>と異なるところは、C<table>を必ずしも指定する必要が
983
-ないということです。
1007
+C<table>を指定する必要はありません。
984 1008
 
985 1009
     $table->insert(param => $param);
986 1010
 
987
-C<table>の値は自動的にbookに設定されます。
988
-
989
-またテーブルオブジェクトには独自のメソッドを追加することができます。
1011
+テーブルオブジェクトには任意のメソッドを追加することができます。
990 1012
 
991 1013
     $table->method(
992 1014
         register => sub {
... ...
@@ -994,40 +1016,32 @@ C<table>の値は自動的にbookに設定されます。
994 1016
             my $table_name = $self->name;
995 1017
             # something
996 1018
         },
997
-        list => sub {
998
-            my $self = shift;
999
-            my $table_name = $self->name;
1000
-            # something
1001
-        }
1019
+        list => sub { ... },
1002 1020
     );
1003 1021
 
1004
-メソッドに渡される第一引数はL<DBIx::Custom::Table>オブジェクトです。
1005 1022
 C<name()>を使用して、テーブル名を取得することができます。
1006 1023
 
1007
-このようにして登録したメソッドは直接呼び出すことができます。
1024
+このようにして登録したメソッドはテーブルオブジェクトから呼び出すことができます。
1008 1025
 
1009 1026
     $table->register(...);
1010 1027
     $table->list(...);
1011 1028
 
1012
-またテーブル専用のメソッドをオーバーライドして作成することもできます。
1029
+=head2 L<DBIx::Custom>と<DBI>のメソッドの利用
1013 1030
 
1014
-    $table->method(
1015
-        insert => sub {
1016
-            my $self = shift;
1017
-            
1018
-            $self->base_insert(...);
1019
-            
1020
-            # something
1021
-        }
1022
-    );
1031
+テーブルからはL<DBIx::Custom>とL<DBI>のすべてのメソッドを呼び出すことができます。
1023 1032
 
1024
-もともと存在していたC<insert()>を呼ぶにはC<base_$method>とします。L<DBIx::Custom::Table>
1025
-のオーバーライドの機能は簡易的なものですが、とても便利です。
1033
+    # DBIx::Custom method
1034
+    $table->execute($sql);
1035
+    
1036
+    # DBI method
1037
+    $table->begin_work;
1038
+    $table->commit;
1026 1039
 
1027
-=head2 テーブルで共有のメソッドの登録
1040
+=head2 テーブルで共有のメソッドの追加
1028 1041
 
1029
-すべてのテーブルでメソッドを共有するにはC<table>メソッドでテーブルを作成する前に、
1030
-C<base_table>にメソッドを登録しておきます。
1042
+すべてのテーブルでメソッドを共有するには
1043
+ベーステーブルにメソッドを登録します。
1044
+ベーステーブルを取得するにはC<base_table>を使用します。
1031 1045
 
1032 1046
     $dbi->base_table->method(
1033 1047
         count => sub {
... ...
@@ -1036,16 +1050,24 @@ C<base_table>にメソッドを登録しておきます。
1036 1050
         }
1037 1051
     );
1038 1052
 
1039
-またテーブルからはL<DBIx::Custom>とL<DBI>のすべてのメソッドを呼び出すことができます。
1053
+このメソッドはすべてのテーブルから利用することができます。
1040 1054
 
1041
-    # DBIx::Custom method
1042
-    $table->execute($sql);
1043
-    
1044
-    # DBI method
1045
-    $table->begin_work;
1046
-    $table->commit;
1055
+    $dbi->table('book')->count(...);
1047 1056
 
1048
-=head2 一般的なモデルの構成
1057
+また同名のメソッドをテーブルに追加して、ベーステーブルの
1058
+メソッドを利用したい場合はC<base_METHOD()>と記述します。
1059
+
1060
+    $table->method(
1061
+        count => sub {
1062
+            my $self = shift;
1063
+            
1064
+            $self->base_count(...);
1065
+            
1066
+            # ...
1067
+        }
1068
+    );
1069
+
1070
+=head2 モデルのサンプル
1049 1071
 
1050 1072
 一般的には、L<DBIx::Custom>を継承してコンストラクタの中に、モデルを作成
1051 1073
 するのがよいでしょう。
... ...
@@ -1058,82 +1080,69 @@ C<base_table>にメソッドを登録しておきます。
1058 1080
         my $self = shift->SUPER::connect(@_);
1059 1081
         
1060 1082
         $self->base_table->method(
1061
-            ... => sub { ... }
1083
+            delete_multi => sub { ... }
1062 1084
         );
1063 1085
         
1064 1086
         $self->table('book')->method(
1065
-            insert_multi => sub { ... },
1066
-            ... => sub { ... }
1087
+            register => sub { ... },
1088
+            remove   => sub { ... },
1067 1089
         );
1068 1090
         
1069 1091
         $self->table('company')->method(
1070
-            ... => sub { ... },
1092
+            register => sub { ... },
1093
+            remove   => sub { ... },
1071 1094
         );
1072 1095
     }
1073 1096
 
1074
-このようにして定義しておけば、次のように利用することができます。
1097
+次のようにこのクラスを利用することができます。
1075 1098
 
1076 1099
     my $dbi = MyDBI->connect(...);
1077
-    $dbi->table('book')->insert_multi(...);
1100
+    $dbi->table('book')->delete_multi(...);
1101
+    $dbi->table('book')->register(...);
1078 1102
 
1079 1103
 =head2 8. パフォーマンスの改善
1080 1104
 
1081 1105
 =head3 クエリの作成
1082 1106
 
1083
-もしC<insert()>メソッドを使用してインサートを実行した場合、
1084
-必要なパフォーマンスを得られない場合があるかもしれません。
1085
-C<insert()>メソッドは、SQL文とステートメントハンドルを
1086
-毎回作成するためです。
1107
+パフォーマンスが得られない場合はC<query>オプションを使って
1108
+クエリを作成してみてください。
1087 1109
 
1088
-そのような場合は、C<query>オプションを指定することで、
1089
-クエリを取得することができます。
1110
+    my $params = [
1111
+        {title => 'Perl', author => 'Ken'},
1112
+        {title => 'Good day', author => 'Tom'}
1113
+    ]
1114
+    my $query = $dbi->insert(table => 'book', param => $params->[0], query => 1);
1090 1115
 
1091
-    my $query = $dbi->insert(table => 'book', param => $param, query => 1);
1116
+戻り値はL<DBIx::Custom::Query>オブジェクトです。
1117
+作成したクエリはC<execute()>で実行することができます。
1092 1118
 
1093
-またC<create_query()>メソッドを使って任意のSQLのクエリを作成
1119
+    foreach my $param (@$params) {
1120
+        $dbi->execute($query, $param);
1121
+    }
1122
+
1123
+ステートメントハンドルが再利用されるので、パフォーマンスが
1124
+改善されます。
1125
+C<query>オプションはC<insert()>, C<update()>, C<update_all()>,
1126
+C<delete()>, C<delete_all()>で利用することができます.
1127
+
1128
+クエリを作成するメソッドに渡すパラメータと
1129
+C<execute()>に渡すパラメータの個数は同じでなければならない
1130
+ことに注意してください。
1131
+
1132
+C<create_query()>を使って任意のSQLのクエリを作成
1094 1133
 することもできます。
1095 1134
 
1096 1135
     my $query = $dbi->create_query(
1097 1136
         "insert into book {insert_param title author};";
1098 1137
     );
1099 1138
 
1100
-戻り値はL<DBIx::Custom::Query>オブジェクトです。
1101
-このオブジェクトはSQL文とパラメータバインド時の列名を
1102
-保持しています。またステートメントハンドルも保持しています。
1103
-
1104
-    {
1105
-        sql     => 'insert into book (title, author) values (?, ?);',
1106
-        columns => ['title', 'author'],
1107
-        sth     => $sth
1108
-    }
1109
-
1110
-クエリオブジェクトを使って繰り返し実行するにはC<execute()>を使用します。
1111
-    
1112
-    my $params = [
1113
-        {title => 'Perl',      author => 'Ken'},
1114
-        {title => 'Good days', author => 'Mike'}
1115
-    ];
1116
-    
1117
-    foreach my $param (@$paramss) {
1118
-        $dbi->execute($query, table => 'book', param => $input);
1119
-    }
1120
-
1121
-C<execute>メソッドの第一引数にクエリオブジェトを渡すことができます。
1122
-C<insert()>メソッドよりも高速です。
1123
-
1124
-注意点がいくつかあります。それはパラメータの数は必ず同じでなくてはならない
1125
-ということです。最初に3つのパラメータだけを渡したのに、次の実行では
1126
-二つのパラメータを渡すと予期しない結果になります。それは
1127
-動的に生成されたSQLに含まれるプレースホルダの数が異なるからです。
1128
-またC<execute()>によっては自動的にはフィルタが有効にならないので、
1129
-C<table>を指定する必要のあることに注意してください。
1130
-本当に必要な場合だけ利用してください。
1131 1139
 
1132 1140
 =head2 9. その他の機能
1133 1141
 
1134 1142
 =head3 メソッドの登録
1135 1143
 
1136
-メソッドを登録するにはC<method()>を使用します。
1144
+D<DBIx::Custom>オブジェクトにメソッドを追加することができます。
1145
+C<method()>を使用します。
1137 1146
 
1138 1147
     $dbi->method(
1139 1148
         update_or_insert => sub {
... ...
@@ -1146,15 +1155,16 @@ C<table>を指定する必要のあることに注意してください。
1146 1155
         }
1147 1156
     );
1148 1157
 
1149
-<method()>で登録したメソッドは
1150
-L<DBIx::Custom>オブジェクトから直接呼び出すことができます。
1158
+これらのメソッドは
1159
+L<DBIx::Custom>オブジェクトから呼び出すことができます。
1151 1160
 
1152 1161
     $dbi->update_or_insert;
1153 1162
     $dbi->find_or_create;
1154 1163
 
1155 1164
 =head3 結果クラスの変更
1156 1165
 
1157
-必要ならば結果クラスを変更することができます。
1166
+結果クラスを変更することができます。
1167
+デフォルトはL<DBIx::Custom::Result>です。
1158 1168
 
1159 1169
     package MyResult;
1160 1170
     use base 'DBIx::Custom::Result';
... ...
@@ -1172,16 +1182,14 @@ L<DBIx::Custom>オブジェクトから直接呼び出すことができます
1172 1182
 
1173 1183
 =head3 キャッシング
1174 1184
 
1175
-タグの展開後のSQLはパフォーマンスの理由のためにキャッシュされます。
1185
+タグの解析後のSQLはパフォーマンスの理由のためにキャッシュされます。
1176 1186
 これはC<chace>で設定でき、デフォルトではキャッシュを行う設定です。
1177 1187
 
1178 1188
     $dbi->cache(1);
1179 1189
 
1180
-キャッシュ方法はC<cache_method>にメソッドを指定することで
1181
-変更することができます。
1182
-データの保存と取得のためのメソッドを定義します。
1183
-
1184
-デフォルトでは次のようにメモリ上にキャッシュを行うものになっています。
1190
+キャッシュ方法はC<cache_method>で変更することができます。
1191
+デフォルトのメソッドは以下のようになっていて、
1192
+メモリ上にキャッシュが保存されます。
1185 1193
 
1186 1194
     $dbi->cache_method(sub {
1187 1195
         sub {
... ...
@@ -1190,22 +1198,28 @@ L<DBIx::Custom>オブジェクトから直接呼び出すことができます
1190 1198
             $self->{_cached} ||= {};
1191 1199
             
1192 1200
             if (@_ > 1) {
1193
-                # Set
1201
+                # キャッシュの保存
1194 1202
                 $self->{_cached}{$_[0]} = $_[1] 
1195 1203
             }
1196 1204
             else {
1197
-                # Get
1205
+                # キャッシュの取得
1198 1206
                 return $self->{_cached}{$_[0]}
1199 1207
             }
1200 1208
         }
1201 1209
     });
1202 1210
     
1203 1211
 第一はL<DBIx::Custom>オブジェクトです。
1204
-第二引数はタグの展開される前のSQLです。
1205
-第三引数はタグの展開後のSQLです。
1212
+第二引数はタグが解析される前のSQLです。
1213
+第三引数はタグの解析後のSQLの情報です。これはハッシュのリファレンスです。
1206 1214
 
1207
-自分で作成する場合は第三引数が存在した場合はキャッシュを設定し、
1215
+第三引数が存在した場合はキャッシュを設定し、
1208 1216
 存在しなかった場合はキャッシュを取得する実装に
1209 1217
 してください。
1210 1218
 
1219
+=head1 サンプル
1220
+
1221
+以下のWikiでサンプルを見ることができます。
1222
+
1223
+L<DBIx::Custom Wiki|https://github.com/yuki-kimoto/DBIx-Custom/wiki>
1224
+
1211 1225
 =cut