データベースを検索して複数件の結果を取得するような場合、iBATISではSqlMapClient#queryForList メソッドを使用する。queryForList には skip と max という引数があり、これを指定するとMySQLで言うところの SELECT ... LIMIT (skip), (max) のような結果が得られる。 ただ、どうもこれは SELECT ... LIMIT (skip), (max) といったSQLを発行してくれているわけではなく、全件取得してクライアント側で絞っているようなので、普通に件数の絞り込みを行う場合のようにサーバサイドで絞るためには、LIMIT句を書いた <select> 要素をSQL Mapファイルに書く必要がある。 で、Ibatorでたくさんのテーブルに対して SQL Mapファイルや Example クラスを生成したときに、いちいち
iBatisには、クエリの結果をMapで受け取る機能があります。 SqlMapClientの以下のメソッドを使用します。 Map queryForMap(statement, parameterClass, keyProperty); 以下サンプルです。 [DDL] -- vim:set ts=4 sw=4 et ws is nowrap ft=sql: CREATE TABLE SAMPLE008_TEST_TABLE( id int auto_increment ,key_column1 varchar(10) not null ,key_column2 varchar(10) not null ,value1 varchar(100) ,value2 timestamp default now() ,primary key(id) ,unique(key_column1) ,uniq
IDの部分は、今まで利用してきた、USER_TABLEのIDを外部キーとしたものです。 ユーザが複数のアイテムを持っているようなケースと考えてください。 (ただし、複数のテーブルから情報を取得することが目的なので、正規化等の話はまったくなしで進めます。) 追加、変更した部分だけ記述します。 <?xml version="1.0" encoding="UTF-8"?><!DOCTYPE sqlMapConfig PUBLIC "-//ibatis.apache.org//DTD SQL Map Config 2.0//EN""http://ibatis.apache.org/dtd/sql-map-config-2.dtd"><sqlMapConfig><transactionManager type="JDBC"><dataSource type="SIMPLE"><property va
先日、少し小規模なバッチプログラムを作るために、Spring Framework 2.5とiBATIS 2.3.2の組み合わせの検証をしました。私は以前からApressの『Pro Spring』と『Building Spring 2 Enterprise Applications』とManningの『iBATIS in Action』をコインランドリーの待ち時間で読んだりして座学はしていたので、要領はわかっており、実際やってみたら、結構上手く作れました。最初は、Spring Batchにチャレンジしてみようかと思いましたが、色々ネット上の資料を漁ってみると技術検証を要することが多くて、Fit&Gap分析や回避策・解決策を練っている時間もなかったので、今回は見送りました。上記の本を読めば、大体どんな風にXMLとかを構成すれば良いのか、わかるのですが、お裾分け程度に私が認識している情報を書かせ
Initial impressions after my first contact with Spring AOP | Home | Part I:Using Spring to consume web services; simple example using Google Web APIs doSpellingSuggestion >> For Othon Sanchez, who wrote: I'm trying to implement ibatis, spring and JSF. Not so hard until now but I have a special requirement, I need to handle the transaction in a EXTERNAL way, like the documentation of iBatis suggest
In 2014, we announced the retirement of our legacy forum, forum.spring.io, in favor of providing an improved community experience on stackoverflow.com. As part of that announcement, we put our forum into read-only mode, preserving forum posts that were referenced in various Spring issue trackers. On February 28, 2019, we plan to take the forum completely offline. In preparation for this end-of-lif
検証環境: Java 1.5.0_09、SpringFramework 2.0.1、iBATIS 2.3.0.677、Jetty 5.1.12。データソースは Spring にて定義する。※実際は JNDI 経由で参照してるだけ。 id="dataSource" class="org.springframework.jndi.JndiObjectFactoryBean"> name="jndiName">jdbc/appDS Spring による宣言的トランザクション管理を行う。 id="transactionManager" class="org.springframework.transaction.jta.JtaTransactionManager" /> id="transactionAttributeSource" class="org.springframework.trans
前回は開発環境構築まで終わったのでいよいよ作っていこうと思う。 でも自動生成できるところはしていかないとめんどくさくてしょうがない。 まずビジネスロジックはJUDEでクラス図を書いたのでjavaスケルトンコードを出力。これでインターフェースと空の実装クラスが完成。パッケージもきちんと分けておけばそのとおりにフォルダが出力されるので、ワークスペースにどーんとブン投げればOK。 次にDAOまわり。今回はIBatisを使うのでAbatorっていうツールが使える。これは前にも使ったことがあって、すごく便利。O/Rマッパーを使用できない案件などで自作DAOを作るときとかも応用できそう。まぁやってることはそんなに難しくなくて、DBにアクセスしてテーブル定義からDAOとモデル、それからIBatis用のSqlMapファイルを生成してくれる。Springと連携する用の設定にすればSqlMapClientDa
Programming::Java::iBATIS::Ibator 差分表示最後の更新で追加された行はこのように表示します。最後の更新で削除された行はこのように表示します。DBにアクセスしてiBATIS用のファイルを自動生成してくれるツール http://ibatis.apache.org/ibator.html ** Eclipseプラグイン版導入 「ヘルプ」→「ソフトウェア更新」→「使用可能なソフトウェア」→「サイトの追加」 でhttp://ibatis.apache.org/tools/ibatorを追加してIbatorをインストール ** 自動生成してみる 以下のようなibatorConfig.xmlを作成 ---(xml <?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE ibatorConfiguration PUBLIC "-//
GeneratedKeyを使う方法は以前書きましたが、今回はiBatisを使った場合の方法です。 1回の命令でシーケンスをエミュレートするやりかたを書いておきます。 まず、iBatisは以下の事が言えます。 Insertの時だけSelectKeyで値を返すことができる(Updateの時は戻り値は更新件数) InsertタグでもUpdate文を発行する事は可能 (JDBCレベルではexecuteUpdateを発行しているため) これらの事をふまえると、 Insertタグの中にUpdate文を記述して、SelectKeyも併せて書くことでインクリメントした値を返すことができます。 さっそくサンプルを。 シーケンステーブルの準備 CREATE TABLE SEQUENCE ( NAME VARCHAR(32) NOT NULL, SEQ INTEGER NOT NULL, CONSTRAINT
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く