2012/05/18

My BatisのMapperクラスをSpringでDIする。

ハマったこと。

MyBatis Generatorで生成したMapperクラスを、SpringでDIしようとしたんですが、MyBatis Generatorで生成されるMapperクラスはインターフェースの為、実装クラスが見つからずにDIが出来ませんでした。

解決法

application-context.xmlに"sqlSessionFactory"と、各MapperクラスのBean定義を追加することで無事DIすることが出来ました。
いろいろと悩んだけど、実際わかってみるとすごくシンプルな事でした。


<bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">
<property name="dataSource" ref="dataSource" />
</bean>

<bean id="exampleMapper" class="org.mybatis.spring.mapper.MapperFactoryBean">
<property name="mapperInterface" value="com.example.mapper.ExampleMapper" />
<property name="sqlSessionFactory" ref="sqlSessionFactory" />
</bean>

参考


会社の先輩に下記のサイトを教えてもらいました。
http://www.h3.dion.ne.jp/~alpha-pz/misc2743.html


2012/05/07

IntegerからStringへの型変換についてのめも

JavaでIntegerからStringへ型変換する時、ふとtoStringとvalueOfってどう使い分ければいいのかが気になったのでちょっと調べてみた時のメモ。

まずIntegerからStringへの型変換は

Integer num = 12345;
String str = null;
//  パターン1
str = num.toString();
//  パターン2
str = String.valueOf(num);
//  パターン3
str = "" + num;

の3通りがあるらしい。
10000000回ループして変換掛けまくってみたところ、速度的には

パターン1:334ms
パターン2:337ms
パターン3:776ms

って感じだった。
パターン1と2はほとんど差は無いけど、パターン3は劇的に遅かった。

※ まあコード的にもあまり好みじゃ無いからもともと使う気無いけど・・・、なんかphpみたいだし。
※※ とは言え、Integerにint突っ込むのも似たような事なんだけど・・・Zzz

ってことはまぁ、toStringもvalueOfもどっち使っても実行速度的には大差ないのかな。
ちょろっと実験しただけなので細かいところ見たら差があるのかもしれないけど。

ぁ、でも仮に変換対象がnullだった時に、valueOfはStringの"null"を返すけど、toStringの方はNullPointerExceptionが返って来るから、差があるとすればこの辺になるのかな??

あまり細かいところまで見てはないから結論は出てないけど、結局"適宜使い分ける"って事なのかな。
時間があるときもっと調べてみよ。