データを取得する時にはTSQuery, TSModelTableを使用します。
まず、TSModelTableの継承したクラスを作ります。
AppBookTable.h
#import <Foundation/Foundation.h> #import "TSModelTable.h" @interface AppBookTable : TSModelTable @end
AppBookTable.m
#import "AppBookTable.h" @implementation AppBookTable -(NSString *)tableName{ return @"book"; } @end
必須なのはtableNameメソッドのみです。 このTableNameメソッドではテーブル名を返してください。
TSModelTableクラスのqueryメソッドよりそのテーブル専用のTSQueryが取得できます。 データ取得の条件分として、addWhereメソッドを使うことでデータを絞り込みます。 データを一つだけ取得する場合、fetchOneを使用します。自動でlimit 1 が付加され、高速にデータを取得します。
AppBookTable.h
#import <Foundation/Foundation.h> #import "TSModelTable.h" @class AppBook; @interface AppBookTable : TSModelTable -(AppBook *)getOneByIndexNo:(NSNumber *)indexNo; @end
AppBookTable.m
#import "AppBookTable.h" #import "AppBook.h" @implementation AppBookTable -(NSString *)tableName{ return @"book"; } -(AppBook *)getOneByIndexNo:(NSNumber *)indexNo{ TSQuery *query = [self query]; [query addWhereWithKey:@"indexNo" value:indexNo]; return [query fetchOne]; } @end
AppBook *book = [[AppBookTable table] getOneByIndexNo:[NSNumber numberWithInt:1]]; // SQL : select * from book where `indexNo` = 1 limit 1
複数取得する場合、fetchAllを使用します。 データはNSArrayにModelクラスが保持されている形で取得できます。
AppBookTable.h
#import <Foundation/Foundation.h> #import "TSModelTable.h" @class AppBook; @interface AppBookTable : TSModelTable -(AppBook *)getOneByIndexNo:(NSNumber *)indexNo; -(NSArray *)getAllBooks; -(NSArray *)getByAuthor:(NSString *)author; @end
AppBookTable.m
#import "AppBookTable.h" #import "AppBook.h" @implementation AppBookTable -(NSString *)tableName{ return @"book"; } -(AppBook *)getOneByIndexNo:(NSNumber *)indexNo{ TSQuery *query = [self query]; [query addWhereWithKey:@"indexNo" value:indexNo]; return [query fetchOne]; } -(NSArray *)getAllBooks{ TSQuery *query = [self query]; return [query fetchAll]; } -(NSArray *)getByAuthor:(NSString *)author{ TSQuery *query = [self query]; [query addWhereWithKey:@"author" value:author]; return [query fetchAll]; } @end
NSArray *allBooks = [[AppBookTable table] getAllBooks]; // SQL : select * from book NSArray *wicketBooks = [[AppBookTable table] getByAuthor:@"wicket"]; // SQL : select * from book where `author` = 'wicket'