mybatisのメモ

■refs
Mybatis公式 イントロダクション
mybatis soruce / jar /google.code
Mybatis Java API でぃれくとり構造
MyBatis による SQL マッピング
⇒具体的な動くサンプルがある
mybatis メモ

MyBatis 3.2.4-SNAPSHOT Reference(公式API)
mybatis pdfマニュアル(英語)
mybatis javadoc(mybatis-3.0.4-javadoc.jar)
⇒中を見たけどすっからかん。javadocやる気なし


■スレッドセーフ、DIについて
refs:スタートガイド
NOTE オブジェクトのライフサイクルと依存性注入(Dependency Injection)フレームワーク
Dependency Injection フレームワークを使うと、スレッドセーフでトランザクション管理された SqlSession や Mapper のインスタンスを作成し、あなたの Bean にインジェクトすることもできます。 こうすることで、SqlSession や Mapper のライフサイクルについてアプリケーションロジックと分離することができます。 MyBatis と DI フレームワークの組み合わせについては、サブプロジェクトである MyBatis-Spring または MyBatis-Guice を参照してください。

■Springとの連携でのトランザクションマネージャ
refs:設定
NOTE MyBatis を Spring と組み合わせて使う場合、トランザクションマネージャーの設定は不要です(設定しても Spring 側で用意したトランザクションマネージャーによって上書きされます)。

■mybatis日本語公式に載っている情報

refs:MyBatis

・外だしxmlで動的SQL
・プロジェクトのディレクトリ構造
・NOTE MyBatis を Spring や Guice といった依存性注入(DI = Dependency Injection)フレームワークと組み合わせて使う場合、SqlSession は DI フレームワークによって作成・注入されます。SqlSessionFactoryBuilder や SqlSessionFactory を使う必要はありませんので、SqlSession の章まで飛ばして構いません。DIフレームワークとの組み合わせについては MyBatis-Spring および MyBatis-Guice のマニュアルを参照してください。
・ロギング
・maven dependency, apache ant, sbt
・Project Build Plugin, Project Plugin Management、依存関係
・ソースリポジトリ、github、プロジェクトサマリ
・メーリングリスト

■mybatis-spring
refs:MyBatis-Spring公式


<dependency>
<groupId>org.mybatis</groupId>
<artifactId>mybatis-spring</artifactId>
<version>x.x.x</version>
</dependency>

mybatis.jar,mybatis-spring.jar,springframework.jarが必要。依存関係がある。一つの例として↓
・springframework.3.1.jar
・mybais-3.2.2.jar
・mybatis-spring.1.2.0.jar

refs:
スタートガイド
動作条件

■外だしxmlファイル
refs
SqlSessionFactoryBean
Mapperの登録

■トランザクション

refs:
[spring]トランザクションの設定に関する設計指針Add Star
トランザクション (公式)
Spring のトランザクションマネージャーが定義されていれば、通常の手順で Spring のトランザクションを利用することができます。 @Transactional アノテーションと AOP 形式での指定、どちらも利用可能です。 トランザクション内では SqlSession が一つ生成され、トランザクションの生存期間中はこの SqlSession が使用されます。 このセッションは、トランザクション完了時にコミットあるいはロールバックされます。
MyBatis-Spring ではトランザクションは透過的に管理されるので、あなたの DAO クラスにコードを追加する必要はありません。


refs:サンプル、プログラムのディレクトリ構造


refs:生成されたレポート
eclipseのgithubプラグインのEGitを使ってみた。javaDeveloper版のeclpiseだと最初からバンドルされていた。ビューからGitリポジトリを開く。ここでgithubでプロジェクトを表示するようにし(ここ寝ながらやってて全く記憶にない)、プロジェクトをインポートしjavaプロジェクトで開発をできるようにした。で、続いてgithubのサーバ側に同名のリポジトリを用意しておかなければならない。用意したらプッシュした。これでサーバ側にあがった。ソースを修正した時もプッシュ。コミットしたけど反映されなかった気がする。プッシュとコミットの違いがわからん。正直こんなレベル。一度しっかり調べて理解しないといけない。

リポジトリを分岐させたい場合、GitリポジトリビューのGitリポジトリを複製しボタンを押し、ディレクトリ名を別名を指定して複製する。そのまま別名でコミット、プッシュしたい場合、プロパティからurlをgitリポジトリの変更し(Gitサービス側でその別名のリポジトリを作成しておく)、.git/configのgitリポジトリ名も変更する。これでおっけ。たぶん。つか、ここまできたら、最初からGitサービス側で別名で複製とかできるならそうした方がいいね。

■eclipseでgituhubのプロジェクト
eclipseでgithubリポジトリのプロジェクトを作成する手順。EGitgGitリポジトリビューの「Gitリポジトリを作成し、このビューに追加」ボタンを押し、適当なディレクトリにローカルリポジトリを作る。できたらリポジトリを右クリックし、プロジェクトをインポートする。プロジェクトをインポートされた状態ではeclipseのプロジェクトではないから、プロジェクトのファセットで一般javaとかなにかしらのeclipseのプロジェクトに変換する。これで後は更新したらコミット、プッシュをすればおっけ。

■eclipseで既存のプロジェクトをgithubで管理
既にeclipseにあるプロジェクトをgithubで管理したい場合、まずそのプロジェクトのディレクトリをツールかコマンドでgithubのリポジトリにする。あとは「このビューへ既存リポジトリを追加」ボタンを押して追加すればおっけ。eclipse上でターゲットのプロジェクトをgithubのリポジトリにしようと色々試してみたけど、できなかった・・・


■参考
git初心者がeclipseでgithubを使ってみる。
eclipseとegitでgithubのリポジトリを扱う
egit/user guide(公式英語)

タイトルの問題が発生。ソースはすべてUTF8に統一している。antファイルを右クリック⇒実行⇒実行構成で外部ツール構成を開き、共通タブでエンコードを見てもちゃんとUTF8になってる。

原因はantの<java>タグで文字コードをUTF8に指定していなかったこと。jvmargタグを追加します。下の例はjavaタグの部分のみ抜粋しています。

・変更前
<java classname="sample.HelloWorldApp" classpath="${classes.dir}" classpathref="classpath" fork="true"></java>

・変更後
<java classname="sample.HelloApp" classpath="${classes.dir}" classpathref="classpath" fork="true">
<jvmarg value="-Dfile.encoding=UTF-8" />
</java>


また、ソースをUTF8に変更すると、今度はwindowsのDOS窓からコンパイルができなくなった。

エラー: この文字は、エンコーディングMS932にマップできません。

javacタスクを文字コードを指定するように変更

・変更前
<javac destdir="${classes.dir}" debug="on" debuglevel="source">
<src path="${src.dir}"/>
<classpath refid="classpath"/>
</javac>

・変更後
<javac encoding="UTF-8" destdir="${classes.dir}" debug="on" debuglevel="source">
<src path="${src.dir}"/>
<classpath refid="classpath"/>
</javac>

これでコンパイルと実行はできたけど文字化け。DOS窓でUTF8を使うようにするには、こちらのサイト を参考。それでもまだ中途半端に文字化けする。だめだこれ。

windows環境で実行ファイルのあるディレクトリをパスに追加するメモ書き。システムの詳細設定⇒環境変数ウインドウを開いてGUIで設定してもいいんだけど、ここではコマンドラインについて書く。

まず、環境変数の一覧はsetコマンドで見られる(printenv,envも)。PATHだけを見たいときは「set PATH」「echo %PATH%」、もしくは「PATH」だけでもいい。

例として、javaのantの実行ファイルのディレクトリパスを追加してみる。

>set PATH=%PATH%;C:\java\lib\apache-ant-1.8.0-bin\apache-ant-1.8.0\bin

PATHの設定は既存のPATHに追加という形にしないといけないから、%PATH%を忘れないように。変更したかどうかは、「set PATH」で確認できる。

ちなみにsetコマンドだと、今開いているコマンドプロンプトのみ有効だから一時的にディレクトリを実行パスに追加したい時に使うといい。もし、環境変数の変更を永続的にしたい場合、setxコマンドを使う。

>setx PATH %PATH%;C:\java\lib\apache-ant-1.8.0-bin\apache-ant-1.8.0\bin
エラー: 構文が無効です。既定のオプションは '2' 回より多く使用することはできません。
"SETX /?" と入力すると使用法が表示されます。

なんかエラーが出た。ネットで調べたら既存のPATHの値にスペースとかがあるとだめらしい。ダブルクォートで囲んでもう一回実行。

>setx PATH "%PATH%;C:\java\lib\apache-ant-1.8.0-bin\apache-ant-1.8.0\bin"

警告: 保存されたデータは 1024 文字に切り捨てられました。

成功: 指定した値は保存されました。

成功はしたけど警告が出てる。切り捨て??ちなみに反映させるにはコマンドプロンプトを開きなおさないといけない。開きなおして「set PATH」で確認してみたけど、パスが追加されていない・・・なんなの?

永続化した環境変数を初期化する場合は""空文字を指定する。こんな感じ。「setx HOGE ""」

また、antでjavacコマンドを書いていて下のようなビルドエラーが出たら、setで各々の環境にあったJAVA_HOMEを指定する。javacはビルドだからjreじゃなかうてjdkのディレクトリでないとだめだ。

BUILD FAILED
c:\tec\java\test_spring\Samples\hoge\build.xml:21: Unable to find a javac compiler;
com.sun.tools.javac.Main is not on the classpath.
Perhaps JAVA_HOME does not point to the JDK.
It is currently set to "C:\Program Files\Java\jre7"

Total time: 0 seconds
>set JAVA_HOME=C:\Program Files\Java\jdk1.7.0_21


■参考
setコマンド
setxコマンド
setxで環境変数を設定する
PATHの設定と確認方法は?(linux環境)

最近、ブログに書く内容がリンクだったりメモ・todoが多い。別にブログで公開するような事でもないからなんとかしないと。何かcms系のツールの導入でも考えようと思う。