9
8

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

MyBatisネタ

Last updated at Posted at 2018-10-10

MyBatisネタ

例によってざっくり備忘録メモ

Springと連携させている時の注意点

DBの接続先はMapperScanがBeanをDIコンテナに登録した時の、データソースの設定が使用される。
@TransactionalのtransactionManagerを切り替えても、切り替えたtransactionManagerで設定されているデータソースのDBに接続しに行くわけではないので注意

まったく同じテーブル構成で、DBの接続先だけが違うようなケース(データソースを2つ用意してそれぞれに個別でアクセスしたい場合)では、
データソース1用のMapperScanと、データソース2用のMapperScanを両方用意し、データソースの片方は、sessionFactoryRefとnameGeneratorを別で指定する必要あり。
※そもそもやり方間違ってる可能性もあるけど。。

nameGeneratorは、生成されるBean名が被らないようにするために必要。
※HogeMapper.java に対してのBeanが生成される際に、何も指定しないと、データソース1用も2用もhogeMapperというBean名で生成しようとするため、名前被りで落ちる。

DIする時(Autowiredする時)もBean名を指定すること。

MyBatis を利用した web application 開発についてのご紹介

eclipse plugin

eclipseマーケットプレイス > Mybatipse
xml書く時に補完が効くようになるので、ほぼ必須

分かりやすい使い方

エンティティクラスにリレーになるエンティティのプロパティを定義して、マッピングさせると幾らか感覚的になる。。?
※GitHubのTest1のtest2プロパティ参照。同様にTest1Mapper.xml の selectTest1Test2c も参照

別xmlに記述した定義(resultMap等)を呼び出す

自動生成

Enum対応はColumnOverride使う
http://blog.zaq.ne.jp/oboe2uran/article/1180/
http://tech-blog.tsukaby.com/archives/205

※GitHubのmyBaitsGeneratorConfig.xml参照

pluginを使用する場合は、generatorConfig.xml 右クリック> 実行の構成 > クラスパス > プロジェクトの追加 > でPluginクラスのプロジェクトを追加する

出力javaファイルの文字コードの指定は

<context>
    <property name="javaFileEncoding" value="UTF-8" />
~
</context>

自動生成されたエンティティのフィールドをprotectedにする

サンプルコードの FieldVisibilityProtectedPlugin.java と myBaitsGeneratorConfig.xml 参照
※自前のpluginを作り(FieldVisibilityProtectedPlugin)、自動実行のpluginとして呼び出す(myBaitsGeneratorConfig.xml の pluginタグ)

LocalDateTime用のTypeHandler

※mybatis-config.xml参照
https://github.com/javaplugs/mybatis-types から必要なタイプハンドラのソースを自プロジェクトにコピーし、xmlのtypehandlerのパスに通す

cacheを切る

http://www.mybatis.org/mybatis-3/ja/configuration.html
のsettingsのcacheEnabled

デフォルトだとcacheが効いているため、1トランザクション?(細かい単位は忘れた)の中で1度実行させているクエリをもう一度投げてもDBまでいかない。

※参考 キャッシュの設定としてはlocalCacheScopeもある

MyBatisGeneratorがjavaファイルを上書きしてくれない(上書き設定にすると、@mbggenerated以外のコードを消してしまう)

eclipseのプラグインを入れ、それを使うと上書きが上手いこといく。
※javaファイルのマージ機能が使えるのが、eclipseプラグインだけらしい。。(1.3.1時点)
http://blogj.harawata.net/2012/05/mybatis-generator.html
http://intink.blogspot.jp/2012/11/mybatisibatismybatis-generator.html

pluginの場所は下記参照
http://www.mybatis.org/generator/running/runningWithEclipse.html

MyBatis で生SQLを叩きたい

[Java]MyBatisの動的SQLでパフォーマンスを改善する

9
8
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
9
8

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?