Soumettre la recherche
Mettre en ligne
Introduction to cocoa sql mapper
•
0 j'aime
•
1,537 vues
mavelph
Suivre
第57回Cocoa勉強会発表資料。
Lire moins
Lire la suite
Technologie
Signaler
Partager
Signaler
Partager
1 sur 27
Télécharger maintenant
Télécharger pour lire hors ligne
Recommandé
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
Recommandé
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
Contenu connexe
En vedette
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
En vedette
(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
Similaire à 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
Similaire à 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 データの定義と操作
Dernier
[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略
[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略
Ryo Sasaki
TSAL operation mechanism and circuit diagram.pdf
TSAL operation mechanism and circuit diagram.pdf
taisei2219
論文紹介:Automated Classification of Model Errors on ImageNet
論文紹介:Automated Classification of Model Errors on ImageNet
Toru Tamaki
論文紹介:Semantic segmentation using Vision Transformers: A survey
論文紹介:Semantic segmentation using Vision Transformers: A survey
Toru Tamaki
SOPを理解する 2024/04/19 の勉強会で発表されたものです
SOPを理解する 2024/04/19 の勉強会で発表されたものです
iPride Co., Ltd.
論文紹介:Content-Aware Token Sharing for Efficient Semantic Segmentation With Vis...
論文紹介:Content-Aware Token Sharing for Efficient Semantic Segmentation With Vis...
Toru Tamaki
スマートフォンを用いた新生児あやし動作の教示システム
スマートフォンを用いた新生児あやし動作の教示システム
sugiuralab
Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介
Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介
Yuma Ohgami
【早稲田AI研究会 講義資料】3DスキャンとTextTo3Dのツールを知ろう!(Vol.1)
【早稲田AI研究会 講義資料】3DスキャンとTextTo3Dのツールを知ろう!(Vol.1)
Hiroki Ichikura
Dernier
(9)
[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略
[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略
TSAL operation mechanism and circuit diagram.pdf
TSAL operation mechanism and circuit diagram.pdf
論文紹介:Automated Classification of Model Errors on ImageNet
論文紹介:Automated Classification of Model Errors on ImageNet
論文紹介:Semantic segmentation using Vision Transformers: A survey
論文紹介:Semantic segmentation using Vision Transformers: A survey
SOPを理解する 2024/04/19 の勉強会で発表されたものです
SOPを理解する 2024/04/19 の勉強会で発表されたものです
論文紹介:Content-Aware Token Sharing for Efficient Semantic Segmentation With Vis...
論文紹介:Content-Aware Token Sharing for Efficient Semantic Segmentation With Vis...
スマートフォンを用いた新生児あやし動作の教示システム
スマートフォンを用いた新生児あやし動作の教示システム
Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介
Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介
【早稲田AI研究会 講義資料】3DスキャンとTextTo3Dのツールを知ろう!(Vol.1)
【早稲田AI研究会 講義資料】3DスキャンとTextTo3Dのツールを知ろう!(Vol.1)
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日土曜日
Télécharger maintenant