Enviar pesquisa
Carregar
Introduction to cocoa sql mapper
•
0 gostou
•
1,537 visualizações
mavelph
Seguir
第57回Cocoa勉強会発表資料。
Leia menos
Leia mais
Tecnologia
Denunciar
Compartilhar
Denunciar
Compartilhar
1 de 27
Baixar agora
Baixar para ler offline
Recomendados
Sns suite presentation
Sns suite presentation
Jason Namkung
Slick入門
Slick入門
chibochibo
Rpscala2011 0601
Rpscala2011 0601
Hajime Yanagawa
SQLQL は GraphQL にとってなんなのか
SQLQL は GraphQL にとってなんなのか
yancya
SQLQL とは!?
SQLQL とは!?
yancya
iPhone, iPad アプリ開発勉強会#3
iPhone, iPad アプリ開発勉強会#3
Hiroe Orz
kibayos_ov_090922
kibayos_ov_090922
Mikio Yoshida
LibreOffice Base をSQLite のフロントエンドにしてみよう
LibreOffice Base をSQLite のフロントエンドにしてみよう
78tch
Recomendados
Sns suite presentation
Sns suite presentation
Jason Namkung
Slick入門
Slick入門
chibochibo
Rpscala2011 0601
Rpscala2011 0601
Hajime Yanagawa
SQLQL は GraphQL にとってなんなのか
SQLQL は GraphQL にとってなんなのか
yancya
SQLQL とは!?
SQLQL とは!?
yancya
iPhone, iPad アプリ開発勉強会#3
iPhone, iPad アプリ開発勉強会#3
Hiroe Orz
kibayos_ov_090922
kibayos_ov_090922
Mikio Yoshida
LibreOffice Base をSQLite のフロントエンドにしてみよう
LibreOffice Base をSQLite のフロントエンドにしてみよう
78tch
PoiCa Sensorの組み込み
PoiCa Sensorの組み込み
mavelph
Attacking Web Proxies
Attacking Web Proxies
InMobi Technology
Optimizer Hints
Optimizer Hints
InMobi Technology
PostgreSQL 9.5 - Major Features
PostgreSQL 9.5 - Major Features
InMobi Technology
Building Spark as Service in Cloud
Building Spark as Service in Cloud
InMobi Technology
Building Machine Learning Pipelines
Building Machine Learning Pipelines
InMobi Technology
Case Studies on PostgreSQL
Case Studies on PostgreSQL
InMobi Technology
Cloud Computing (CCSME 2015 talk) - mypapit
Cloud Computing (CCSME 2015 talk) - mypapit
Mohammad Hafiz Cs Mypapit
8 Ways a Digital Media Platform is More Powerful than “Marketing”
8 Ways a Digital Media Platform is More Powerful than “Marketing”
New Rainmaker
How Often Should You Post to Facebook and Twitter
How Often Should You Post to Facebook and Twitter
Buffer
Slides That Rock
Slides That Rock
Slides That Rock
Why Content Marketing Fails
Why Content Marketing Fails
Rand Fishkin
What Makes Great Infographics
What Makes Great Infographics
SlideShare
Masters of SlideShare
Masters of SlideShare
Kapost
STOP! VIEW THIS! 10-Step Checklist When Uploading to Slideshare
STOP! VIEW THIS! 10-Step Checklist When Uploading to Slideshare
Empowered Presentations
You Suck At PowerPoint!
You Suck At PowerPoint!
Jesse Desjardins - @jessedee
10 Ways to Win at SlideShare SEO & Presentation Optimization
10 Ways to Win at SlideShare SEO & Presentation Optimization
Oneupweb
How To Get More From SlideShare - Super-Simple Tips For Content Marketing
How To Get More From SlideShare - Super-Simple Tips For Content Marketing
Content Marketing Institute
A Guide to SlideShare Analytics - Excerpts from Hubspot's Step by Step Guide ...
A Guide to SlideShare Analytics - Excerpts from Hubspot's Step by Step Guide ...
SlideShare
2015 Upload Campaigns Calendar - SlideShare
2015 Upload Campaigns Calendar - SlideShare
SlideShare
SQL Serverの関数を一覧でマスターしよう
SQL Serverの関数を一覧でマスターしよう
A AOKI
Scala.jsプロジェクト作成まで
Scala.jsプロジェクト作成まで
Tomohiro Suwa
Mais conteúdo relacionado
Destaque
PoiCa Sensorの組み込み
PoiCa Sensorの組み込み
mavelph
Attacking Web Proxies
Attacking Web Proxies
InMobi Technology
Optimizer Hints
Optimizer Hints
InMobi Technology
PostgreSQL 9.5 - Major Features
PostgreSQL 9.5 - Major Features
InMobi Technology
Building Spark as Service in Cloud
Building Spark as Service in Cloud
InMobi Technology
Building Machine Learning Pipelines
Building Machine Learning Pipelines
InMobi Technology
Case Studies on PostgreSQL
Case Studies on PostgreSQL
InMobi Technology
Cloud Computing (CCSME 2015 talk) - mypapit
Cloud Computing (CCSME 2015 talk) - mypapit
Mohammad Hafiz Cs Mypapit
8 Ways a Digital Media Platform is More Powerful than “Marketing”
8 Ways a Digital Media Platform is More Powerful than “Marketing”
New Rainmaker
How Often Should You Post to Facebook and Twitter
How Often Should You Post to Facebook and Twitter
Buffer
Slides That Rock
Slides That Rock
Slides That Rock
Why Content Marketing Fails
Why Content Marketing Fails
Rand Fishkin
What Makes Great Infographics
What Makes Great Infographics
SlideShare
Masters of SlideShare
Masters of SlideShare
Kapost
STOP! VIEW THIS! 10-Step Checklist When Uploading to Slideshare
STOP! VIEW THIS! 10-Step Checklist When Uploading to Slideshare
Empowered Presentations
You Suck At PowerPoint!
You Suck At PowerPoint!
Jesse Desjardins - @jessedee
10 Ways to Win at SlideShare SEO & Presentation Optimization
10 Ways to Win at SlideShare SEO & Presentation Optimization
Oneupweb
How To Get More From SlideShare - Super-Simple Tips For Content Marketing
How To Get More From SlideShare - Super-Simple Tips For Content Marketing
Content Marketing Institute
A Guide to SlideShare Analytics - Excerpts from Hubspot's Step by Step Guide ...
A Guide to SlideShare Analytics - Excerpts from Hubspot's Step by Step Guide ...
SlideShare
2015 Upload Campaigns Calendar - SlideShare
2015 Upload Campaigns Calendar - SlideShare
SlideShare
Destaque
(20)
PoiCa Sensorの組み込み
PoiCa Sensorの組み込み
Attacking Web Proxies
Attacking Web Proxies
Optimizer Hints
Optimizer Hints
PostgreSQL 9.5 - Major Features
PostgreSQL 9.5 - Major Features
Building Spark as Service in Cloud
Building Spark as Service in Cloud
Building Machine Learning Pipelines
Building Machine Learning Pipelines
Case Studies on PostgreSQL
Case Studies on PostgreSQL
Cloud Computing (CCSME 2015 talk) - mypapit
Cloud Computing (CCSME 2015 talk) - mypapit
8 Ways a Digital Media Platform is More Powerful than “Marketing”
8 Ways a Digital Media Platform is More Powerful than “Marketing”
How Often Should You Post to Facebook and Twitter
How Often Should You Post to Facebook and Twitter
Slides That Rock
Slides That Rock
Why Content Marketing Fails
Why Content Marketing Fails
What Makes Great Infographics
What Makes Great Infographics
Masters of SlideShare
Masters of SlideShare
STOP! VIEW THIS! 10-Step Checklist When Uploading to Slideshare
STOP! VIEW THIS! 10-Step Checklist When Uploading to Slideshare
You Suck At PowerPoint!
You Suck At PowerPoint!
10 Ways to Win at SlideShare SEO & Presentation Optimization
10 Ways to Win at SlideShare SEO & Presentation Optimization
How To Get More From SlideShare - Super-Simple Tips For Content Marketing
How To Get More From SlideShare - Super-Simple Tips For Content Marketing
A Guide to SlideShare Analytics - Excerpts from Hubspot's Step by Step Guide ...
A Guide to SlideShare Analytics - Excerpts from Hubspot's Step by Step Guide ...
2015 Upload Campaigns Calendar - SlideShare
2015 Upload Campaigns Calendar - SlideShare
Semelhante a Introduction to cocoa sql mapper
SQL Serverの関数を一覧でマスターしよう
SQL Serverの関数を一覧でマスターしよう
A AOKI
Scala.jsプロジェクト作成まで
Scala.jsプロジェクト作成まで
Tomohiro Suwa
Tdd
Tdd
Takaya Kotohata
DeclarativeSql
DeclarativeSql
Takaaki Suzuki
Google Gears データベースの基礎
Google Gears データベースの基礎
webos-goodies
大(中)規模Java script開発について
大(中)規模Java script開発について
Yuki Tanaka
PerlとSQLのいろいろ
PerlとSQLのいろいろ
Takuya Tsuchida
スケーラブルなアプリケーション開発を考える
スケーラブルなアプリケーション開発を考える
Yusaku Watanabe
Nds meetup8 lt
Nds meetup8 lt
ushiboy
めんどくさくない Scala #kwkni_scala
めんどくさくない Scala #kwkni_scala
Kazuhiro Sera
KOF2015 PostgreSQL 9.5
KOF2015 PostgreSQL 9.5
Toshi Harada
scala.collection 再入門 (改)
scala.collection 再入門 (改)
Ryuichi ITO
例外設計における大罪
例外設計における大罪
Takuto Wada
PostgreSQL 12の話
PostgreSQL 12の話
Masahiko Sawada
JDK8で変わるJavaプログラミング
JDK8で変わるJavaプログラミング
Go Hayakawa
Osc shimane-2016-do-postgres-dream-of-graph-database
Osc shimane-2016-do-postgres-dream-of-graph-database
Toshi Harada
データベースシステム論06 - SQL基礎演習1 データの定義と操作
データベースシステム論06 - SQL基礎演習1 データの定義と操作
Shohei Yokoyama
Semelhante a Introduction to cocoa sql mapper
(17)
SQL Serverの関数を一覧でマスターしよう
SQL Serverの関数を一覧でマスターしよう
Scala.jsプロジェクト作成まで
Scala.jsプロジェクト作成まで
Tdd
Tdd
DeclarativeSql
DeclarativeSql
Google Gears データベースの基礎
Google Gears データベースの基礎
大(中)規模Java script開発について
大(中)規模Java script開発について
PerlとSQLのいろいろ
PerlとSQLのいろいろ
スケーラブルなアプリケーション開発を考える
スケーラブルなアプリケーション開発を考える
Nds meetup8 lt
Nds meetup8 lt
めんどくさくない Scala #kwkni_scala
めんどくさくない Scala #kwkni_scala
KOF2015 PostgreSQL 9.5
KOF2015 PostgreSQL 9.5
scala.collection 再入門 (改)
scala.collection 再入門 (改)
例外設計における大罪
例外設計における大罪
PostgreSQL 12の話
PostgreSQL 12の話
JDK8で変わるJavaプログラミング
JDK8で変わるJavaプログラミング
Osc shimane-2016-do-postgres-dream-of-graph-database
Osc shimane-2016-do-postgres-dream-of-graph-database
データベースシステム論06 - SQL基礎演習1 データの定義と操作
データベースシステム論06 - SQL基礎演習1 データの定義と操作
Último
モーダル間の変換後の一致性とジャンル表を用いた解釈可能性の考察 ~Text-to-MusicとText-To-ImageかつImage-to-Music...
モーダル間の変換後の一致性とジャンル表を用いた解釈可能性の考察 ~Text-to-MusicとText-To-ImageかつImage-to-Music...
博三 太田
自分史上一番早い2024振り返り〜コロナ後、仕事は通常ペースに戻ったか〜 by IoT fullstack engineer
自分史上一番早い2024振り返り〜コロナ後、仕事は通常ペースに戻ったか〜 by IoT fullstack engineer
Yuki Kikuchi
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)
Hiroshi Tomioka
NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)
NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)
NTT DATA Technology & Innovation
AWS の OpenShift サービス (ROSA) を使った OpenShift Virtualizationの始め方.pdf
AWS の OpenShift サービス (ROSA) を使った OpenShift Virtualizationの始め方.pdf
FumieNakayama
クラウドネイティブなサーバー仮想化基盤 - OpenShift Virtualization.pdf
クラウドネイティブなサーバー仮想化基盤 - OpenShift Virtualization.pdf
FumieNakayama
TataPixel: 畳の異方性を利用した切り替え可能なディスプレイの提案
TataPixel: 畳の異方性を利用した切り替え可能なディスプレイの提案
sugiuralab
CTO, VPoE, テックリードなどリーダーポジションに登用したくなるのはどんな人材か?
CTO, VPoE, テックリードなどリーダーポジションに登用したくなるのはどんな人材か?
akihisamiyanaga1
デジタル・フォレンジックの最新動向(2024年4月27日情洛会総会特別講演スライド)
デジタル・フォレンジックの最新動向(2024年4月27日情洛会総会特別講演スライド)
UEHARA, Tetsutaro
Último
(9)
モーダル間の変換後の一致性とジャンル表を用いた解釈可能性の考察 ~Text-to-MusicとText-To-ImageかつImage-to-Music...
モーダル間の変換後の一致性とジャンル表を用いた解釈可能性の考察 ~Text-to-MusicとText-To-ImageかつImage-to-Music...
自分史上一番早い2024振り返り〜コロナ後、仕事は通常ペースに戻ったか〜 by IoT fullstack engineer
自分史上一番早い2024振り返り〜コロナ後、仕事は通常ペースに戻ったか〜 by IoT fullstack engineer
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)
NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)
NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)
AWS の OpenShift サービス (ROSA) を使った OpenShift Virtualizationの始め方.pdf
AWS の OpenShift サービス (ROSA) を使った OpenShift Virtualizationの始め方.pdf
クラウドネイティブなサーバー仮想化基盤 - OpenShift Virtualization.pdf
クラウドネイティブなサーバー仮想化基盤 - OpenShift Virtualization.pdf
TataPixel: 畳の異方性を利用した切り替え可能なディスプレイの提案
TataPixel: 畳の異方性を利用した切り替え可能なディスプレイの提案
CTO, VPoE, テックリードなどリーダーポジションに登用したくなるのはどんな人材か?
CTO, VPoE, テックリードなどリーダーポジションに登用したくなるのはどんな人材か?
デジタル・フォレンジックの最新動向(2024年4月27日情洛会総会特別講演スライド)
デジタル・フォレンジックの最新動向(2024年4月27日情洛会総会特別講演スライド)
Introduction to cocoa sql mapper
1.
Introduction to
CocoaSQLMapper Kenji Nishishiro @marvelph 13年1月26日土曜日
2.
CocoaSQLMapperとは?
Objective-CからSQLiteを利用するためのフレー ムワークです。 JavaのiBATISの影響を受けています。 13年1月26日土曜日
3.
対象となる開発者
SQLiteのC API、あるいは FMDBのようなラッパ ーライブラリを利用している開発者。 なぜCoreDataを使わないのか、説明が必要無 い開発者。 13年1月26日土曜日
4.
サンプルテーブル
key name age 1 kenji 41 列に型は不要です 2 yoshiko 41 3 izumi 17 keyはautoincrementです 4 sumika 14 13年1月26日土曜日
5.
モデルクラス
@interface Person : NSObject @property (nonatomic) long long key; @property (nonatomic) NSString *name; @property (nonatomic) NSNumber *age; @end テーブルの列名とプロパティ名を えます 13年1月26日土曜日
6.
一行読み込み SMDatabase *database
= [[SMDatabase alloc] initWithPath:path error:nil]; NSString *sql = @"SELECT * FROM Person WHERE name = 'kenji'"; Person *person = [database selectObjectBySQL:sql parameter:nil resultClass:[Person class] error:nil]; SQLとモデルのクラスを与えると、 インスタンスが得られます 13年1月26日土曜日
7.
複数行読み込み
NSString *sql = @"SELECT * FROM Person"; NSArray *persons = [database selectArrayBySQL:sql parameter:nil resultClass:[Person class] error:nil]; インスタンスの配列が、 NSArayで得られます 13年1月26日土曜日
8.
集計
@interface Count : NSObject @property (nonatomic) int value; @end NSString *sql = @"SELECT COUNT(*) AS value FROM Person"; Count *count = [database selectObjectBySQL:sql parameter:nil resultClass: [Count class] error:nil]; 結果セットに、 AS句でプロパティ名を付けています 13年1月26日土曜日
9.
ここまでのまとめ
テーブルのデータをモデルに読み込む事が できます。 テーブルのスキーマでは無く、SQLとマッピ ングします。 データの型はモデルから決定されます。 13年1月26日土曜日
10.
オープンソース
https://github.com/marvelph/CocoaSQLMapper 13年1月26日土曜日
11.
パラメータ
@interface Parameter : NSObject @property (nonatomic, strong) NSNumber *value1; @property (nonatomic, strong) NSNumber *value2; @end Parameter *parameter = [[Parameter alloc] init]; parameter.value1 = @10; parameter.value2 = @20; NSString *sql = @"SELECT * FROM Person WHERE :value1 <= age AND age <= :value2"; NSArray *persons = [database selectArrayBySQL:sql parameter:parameter resultClass: [Person class] error:nil]; バインド変数名をプロパティ名に合わせます 13年1月26日土曜日
12.
挿入
Person *person = [[Person alloc] init]; person.name = @"setuna"; person.age = @11; long long int key = [database insertBySQL:@"INSERT INTO Person (name, age) VALUES(:name, :age)" parameter:person error:nil]; person.key = key; autoincrementされたkeyが手に入るので、 行の読み込みが不要です 後でupdateする時に必要ですよね? 13年1月26日土曜日
13.
更新
更新された行数が手に入るので、 悲観的ロックなどにどうぞ Person *person = [[Person alloc] init]; person.key = 1; person.age = @31; int count = [database updateBySQL:@"UPDATE Person SET age = :age WHERE key = :key" parameter:person error:nil]; 13年1月26日土曜日
14.
削除
deleteBySQLというメソッドがありますが、 これは更新と一緒です 13年1月26日土曜日
15.
DDL
挿入・更新・削除以外のSQLには、 特別な値を返さないexecuteBySQLを用います 13年1月26日土曜日
16.
型のマッピング
int long long BOOL float double NSNumber NSDate NSString NSData nil int int64 int double double any double text bytes null NSNumberは中身次第です NSDateはエポックからの経過秒数です NSStringはUTF8として扱います 13年1月26日土曜日
17.
ヒント
nullを検索する時は、SQLにIS NULLと記述しな くても、パラメータにnilを指定する事で実 現できます。 NSNumberは、数値プロパティがnilを許したい 時に用います。 13年1月26日土曜日
18.
ヒント
モデルにはゲッターとセッターでは無く、 本物のプロパティが必要です。 エラーの取得はオプションです。 13年1月26日土曜日
19.
ここまでのまとめ
挿入・更新・削除と操作別のメソッドがあ ります。 扱えるプロパティの型には制限がありま す。 13年1月26日土曜日
20.
行単位の処理
NSString *sql = @"SELECT * FROM Person"; [database selectWithBlock:^BOOL(Person *person, NSError *__autoreleasing *error) { return YES; } bySQL:sql parameter:nil resultClass:[Person class] error:nil]; 行単位でブロックが呼び出されます 結果行数が多い場合に、 NSArrayの生成を避ける事ができます ブロックがNOを返すと中断します 13年1月26日土曜日
21.
トランザクション
transactionWithBlockに渡したブロック内の処理を、 トランザクジョンとして纏める事ができます ブロックがNOを返すとロールバックします サンプルを読んでください 13年1月26日土曜日
22.
エラー処理
トランザクションブロック内側のエラーは、 パラメータに返してください トランザクション自体のエラーと一括処理できま す サンプルを読んでください 13年1月26日土曜日
23.
マルチスレッド
SMDatabaseのインスタンスをスレッド毎に生 成してください。 デッドロック発生時のタイムアウトは未実 装です。 13年1月26日土曜日
24.
実績
PoiCaのiOS版で1年以上実際に使用していま す。http://poica.me/ 13年1月26日土曜日
25.
設計
SQLを設定ファイルに分離する事は、可読性 を下げると考えています。 SQLのプリコンパイルは、メリットが少ない と考えています。 13年1月26日土曜日
26.
構想
パラメータの為にクラスを定義する事が面 倒なので、NSDictionaryを使えるようにしたい です。この場合、NSNullのサポートも必要か もしれません。 マルチスレッド利用時に、タイムアウトを サポートしたいです。 13年1月26日土曜日
27.
ありがとうございました 13年1月26日土曜日
Baixar agora