いろいろ備忘録日記

主に .NET と Python絡みのメモを公開しています。

ibatis

iBatis.NET奮闘記-006 (1対Nのデータ取得) (Mapper, ISqlMapper, QueryForObject, groupBy resultMap)

今回は、1対Nのデータの取得を行なってみます。 やり方ですが、基本的にはJava版と同じです。 1対NのようなJOIN関連の場合に重要となってくるのが SQL定義ファイル内に定義するresultMapの定義です。これが、無いとJOINがうまく出来ません。 実際に、どのよ…

iBatis.NET奮闘記-003 (基本的な操作(Insert)) (Mapper, ISqlMapper, Insert, IDalSession, BeginTransaction, selectKey)

今回は、Insertを行なってみます。基本的に、InsertもUpdateもDeleteも同じです。 SQL定義ファイルに定義を行い、後はInsertの場合はInsertメソッド、Updateの場合はUpdateメソッドを呼ぶのみです。 但し、Insertの場合のみ他の変更系クエリの場合と一点違う…

iBatis.NET奮闘記-004 (基本的な操作(Update)) (Mapper, ISqlMapper, Update, IDalSession, BeginTransaction)

今回は、Updateです。 Updateも基本的には、Insertと同じです。 ISqlMapperオブジェクトの以下のメソッドを利用します。 public int Update(string statementName, object data) 戻り値として返却されるのは、更新件数です。 てことで、いつものようにモデル…

iBatis.NET奮闘記-005 (基本的な操作(Delete)) (Mapper, ISqlMapper, Delete, IDalSession, BeginTransaction)

今回は、Deleteです。 Deleteは、Updateと同じです。 ISqlMapperオブジェクトの以下のメソッドを利用します。 public int Delete(string statementName, object data) 戻り値として返却されるのは、削除件数です。 てことで、いつものようにモデルクラスから…

iBatis.NET奮闘記-001 (インストール及びVisualStudioでの環境設定)

iBatis.NETは、以前このブログ内にてしばらく奮闘記を記述していましたiBatisの.NET版です。 本家のページには、他にもRuby用のiBatisなどが存在しています。 前に記述しましたjava版のibatisについての記事は、以下の場所にまとめてあります。 基本的に、ja…

iBatis.NET奮闘記-002 (基本的な操作(1テーブルに対するSelect)) (Mapper, ISqlMapper, QueryForList, QueryForObject)

今回は、基本的なデータ取得の方法をやってみます。 つまり、1テーブルに対してのSelect文の発行です。 IBatis.NETにて、特定のSQLを実行するために通常作成するファイルは以下の通りです。 SQL定義ファイル(SqlMapファイル) (必須) モデルクラス (オプショ…

iBatis奮闘記-0022 (2.3.0リリース(ベータ))

いつの間にか、2.3.0がベータとしてリリースされていました。 しかも、2.2.0はGAになってる。w 2.3.0の大きなリリース点としては、 ibatis DAO Frameworkが廃止 PaginatedListの廃止 でしょう。 DAO Frameworkの代わりにSpring Frameworkを PaginatedListの…

iBatis奮闘記-0021 (ユーティリティクラスの利用)

前回より、大分間があいてしまいましたが前回作成したユーティリティクラスを利用したバージョンです。 前回の記事は、こちら。 http://d.hatena.ne.jp/gsf_zero1/20060917/p1 利用しているDAOの記事は、こちら。 http://d.hatena.ne.jp/gsf_zero1/20060914/…

iBatis奮闘記-0020 (ユーティリティクラスの作成)

今回、SqlMapの時と同じようにユーティリティクラスを定義してみます。以下、ソースです。 ここに出てこないソースなどは、以下の記事を参照してみてください。 http://d.hatena.ne.jp/gsf_zero1/20060812/1155483349 [DAO実行用インターフェース] // vim:se…

iBatis奮闘記-0019 (基本的なDAOの作成-2)

実際に、DAOの作成を行います。インターフェースを定義します。 DAOフレームワークを使用する場合の決まりごとですが、定義するインターフェースは、 com.ibatis.dao.client.Daoインターフェース を継承して作成します。このインターフェースはマーカーイン…

iBatis奮闘記-0018 (基本的なDAOの作成-1)

今回、基本的なDAOの作成方法を記述したいと思います。iBatis DAOフレームワークでは、DAOを作成する場合、 インターフェース 実装クラス を作成します。これは、DAOフレームワークに限った事ではなく 通常のクラス設計でも同じことですが。DAOフレームワー…

iBatis奮闘記-0017 (iBatis Data Access Object Frameworkの設定)

iBatis Data Access Objectフレームワークは、DAOに焦点を絞った簡易DIコンテナ みたいな役割をもってます。これを利用するとDAOのインターフェースと実装クラスを 分離し、クラス利用側からは、インターフェースのみで扱えるようになります。 余計な機能が…

iBatis奮闘記-0016 (SqlMap設定ファイル)

現段階までのSqlMap設定ファイルの内容です。[database.properties] driver=org.h2.Driver url=jdbc:h2:tcp://localhost/test; username=sa password= [SqlMapConfig.xml]

iBatis奮闘記-0015 (これまでの記事のドア)

結構数も増えてきたので、ここまでの分のドア記事を作成。 リンク間違ってたら、すみません。m(_ _)m iBatis奮闘記-0001 (インストール) http://d.hatena.ne.jp/gsf_zero1/20060714/1152856791 iBatis奮闘記-0002 (1テーブルのCRUD) http://d.hatena.ne.jp/…

iBatis奮闘記-0014 (結果をXML形式で取得する)

iBatisのクエリー発行方法には、結果をXML形式で取得する方法もあります。 XML形式で取得する際も、普通にselectするのと手順は変わりませんが、 以下の点を守らなければなりません。 resultClass属性に"xml"と指定する xmlResultName属性を追加する。 XML形…

iBatis奮闘記-0013 ($を使用した動的パラメータ)

ibatisには、SQLマッピング設定ファイルにて、以下の2つの値指定ができます。 #を使用した値指定 $を使用した値指定 上記の2つの違いは、#は実行時にエスケープや文字列の場合は' 'で囲んでくれるなどの処理をおこなってくれますが $の方は、指定された値を…

iBatis奮闘記-0012 (selectKeyによる採番)

iBatisでは、insert時にシーケンスなどから採番し、insertしてから、その値を取得する 機能があります。その際に使用するのがselectKey要素です。以下サンプルです。[DDL] -- vim: set ts=4 sw=4 et ws is nowrap ft=sql: CREATE TABLE SAMPLE009_TEST_TABLE…

iBatis奮闘記-0011 (iBatis 2.2.0リリース)

iBatis 2.2.0がリリースされました。ただし、まだBetaリリースとなっています。いくつかの機能追加と修正を行っているみたいです。 内容については、以下の記事が詳しく書かれていらっしゃいます。 Invention Works http://blog.seesaa.jp/tb/22498960 また…

iBatis奮闘記-0010 (結果をMapで受け取る)

iBatisには、クエリの結果をMapで受け取る機能があります。SqlMapClientの以下のメソッドを使用します。 Map queryForMap(statement, parameterClass, keyProperty); 以下サンプルです。[DDL] -- vim:set ts=4 sw=4 et ws is nowrap ft=sql: CREATE TABLE SA…

iBatis奮闘記-0009 (RowHandlerの使用)

iBatisでは、行データをハンドリングするハンドラを 指定することができます。 com.ibatis.sqlmap.event.RowHandler RowHandlerはインターフェースとなっており、 void handleRow(Object obj); というメソッドが一つだけ定義されています。 このメソッドに渡…

iBatis奮闘記-0008 (ページング機能付きのリストの取得(PaginatedList))

iBatisには、ページング機能付きのリストを取得する機能があります。 com.ibatis.common.util.PaginatedList このインターフェースは、Listインターフェースを継承しており、 Listのメソッドに加え、以下のようなページングのメソッドを提供しています。 get…

iBatis奮闘記-0007 (ユーティリティクラスの作成)

iBatisを使用していると、SqlMapClientを生成している部分などを 毎回記述すると面倒になります。iBatisのドキュメントにはSqlMapClientを生成するUtilクラスを 作成する例が記述されています。 てことで、面倒な初期化処理などを引き受けてくれるユーティリ…

iBatis奮闘記-0006 (バッチ処理)

大量のInsertなどが発行される場合、普通にひとつずつ発行していると 時間がかかってしまいます。そのようなときは、バッチ処理を行い 一括して処理を送信します。iBatisにおいて、バッチ処理を行う場合、 以下のメソッドを使用します。 sqlMap.startBatch()…

DTDファイルへのURLが変更

iBatisにて、記述するXMLファイルのDTD宣言部分が、 前は、http://www.ibatis.com/dtd/sql-map-2.dtd だったのですが、ibatis.comサーバーから削除されたみたいです。 (でも、まだ存在してるんだけど・・・) これからは、以下の宣言を使用するべきみたいで…

RBatis

Ruby用のiBatisがリリースされたみたいです。 その名も, RBatis.http://ibatis.apache.org/docs/ruby/RDoc形式のドキュメントがあります。 こっちは、XMLファイルを使用しないように見えます。

iBatis奮闘記-0005 (動的SQL(Dynamic Mapped Statement))

今回は、動的SQLについてです。 iBatisには、動的SQLを簡単に作成する方法が用意されています。 JDBCを使用して文字列を必死になって連結よりも楽にできるようになります。動的SQLがよく使用される場面は、検索画面などです。 これらの画面などでは、複数の…

iBatis奮闘記-0004 (1:1の関連)

次は、1:1の関連です。こちらは、1:Nよりも楽です。 ポイントは、1:Nの時と同じく適切にresultMapを定義することだけです。[テーブル定義] create table one_to_one_test_table1 (id int primary key, val varchar(50), table2_id int); create table one_to…

iBatis奮闘記-0003 (1:Nの関連)

てことで、次は1:Nのマッピングについてやってみます。 普通は、1:1のマッピングからスタートだと思いますが 1:1は次の回でやります。(なんでかっていうと、こっちを 先に覚えておかないといけない羽目になったからです ハイw)複雑なマッピングの場合、以下…

iBatis奮闘記-0002 (1テーブルのCRUD)

てことで、まずは基本中の基本。1テーブルに対してCRUD処理をしてみます。 iBatisで処理を行う際に、設定ファイルのほかに各SQLを収めたSQL設定ファイルが必要になります。 これも名前はなんでもいいみたいですが、取得クラス名にあわせたりするほうがいいで…

iBatis奮闘記-0001 (インストール)

iBatisは、Hibernateなどと同じくO/Rマッピングライブラリです。 ただし、Hibernateなどと違うのはSQLを直に書いて処理を行うという点です。 つまり、SQLのパワーをフルで使えます。普段からSQLをゴリゴリ書いている人には 合うんではないでしょうか。 今回…