Profile cover photo
Profile photo
Iwao AVE!
38 followers
38 followers
About
Iwao's posts

MyBatis 3.4.2, MyBatis-Spring 1.3.1, MyBatis-Spring-Boot-Starter 1.2.0 の更新内容です。

## MyBats 3.4.2

### 機能追加

- すべての列が null である行が返された場合、返り値は null になるのがデフォルトの動作ですが、設定で returnInstanceForEmptyRow に true を設定することで空のオブジェクトを返すように動作を変更できるようになりました。
- Mapper インターフェイスに default method を定義できるようになりました。
- 独自クラスに対する type handler が未登録の場合、その親クラスに対して登録されている type handler が(もしあれば)適用されるようになりました。 #859
- 独自の Cache 実装を使用する場合、 `@CacheNamespace` の properties 属性で任意のプロパティを設定できるようになりました。 #841
- `@CacheNamespace` の name 属性でキャッシュの namespace を指定できるようになりました。 #842
- 独自のキャッシュ実装でプロパティ設定後に呼び出される初期化用のメソッドを定義できるようになりました。 #816
- 変数を参照するプレースホルダーの記述でデフォルト値を指定できるようになりました。 #852
- TypeHandlers-JSR310 1.0.2 で追加された type handler が自動検出されます。 #878

### 不具合修正

- resultMap で定義されていないコンストラクタを使って値がマッピングされた場合、返り値が null になってしまう問題が修正されました。 #830
- XML 設定ファイルの `<setting />` 要素で変数の参照が正しく解決されない問題が修正されました。 #723
- 配列型の引数をインデックス付きで参照した場合に値が null になってしまう問題が修正されました。 #747
- 起動時の XML mapper ファイル読込処理のメモリ使用量が少なくなりました。3.3.0-3.4.1 のバージョンでは CI 環境など繰り返し初期化処理が実行されるユースケースで Full GC 頻発、OutOfMemoryError などの問題が生じる可能性がありました。 #867
- POOLED データソースで接続リークが発生する問題が修正されました。 #748
- 遅延読込が指定されたプロパティの setter 呼び出しによって遅延読込が実行されてしまう問題が修正されました。 #749
- 上限付きワイルドカード型のクラスに結果をマッピングする際に ReflectionException が発生する可能性があったのを修正しました。 #807
- 総称型クラスで setter のみが定義されているプロパティに結果を設定する際に ReflectionException が発生する問題を修正しました。 #755

それと、このバージョンから aggressiveLazyLoading のデフォルト値が true から false に変更されています。aggressiveLazyLoading=true だと eager loading と変わらないケースが多いためです。

チケットのリストはこちらです。
https://github.com/mybatis/mybatis-3/milestone/15?closed=1


## MyBatis-Spring 1.3.1

- MapperScannerConfigurer のプロパティで指定した変数参照が正しく解決されない問題が修正されました。 #144

チケットリストはこちら。
https://github.com/mybatis/spring/milestone/7?closed=1

## MyBatis-Spring-Boot-Starter 1.2.0

ちょっと追いきれていませんが、Spring-Boot の最新バージョンへの対応がメインのようです。 

https://github.com/mybatis/spring-boot-starter/milestone/8?closed=1

Spring の要求バージョンが 4.3 以降となっています。
Spring Initializer (https://start.spring.io/) も最新版に対応済みとのことです。



MyBatis Generator 1.3.5, MyBatis-Ignite 1.0.3, MyBatis-TypeHandlers-JSR310 1.0.2 の更新内容です。

## MyBats Generator 1.3.5

- `IS_AUTOINCREMENT`, `IS_GENERATEDCOLUMN` をサポートしていない JDBC ドライバーでエラーが発生する問題が修正されています。 #136
- 最近の MySQL JDBC ドライバーで 'Column name pattern can not be NULL or empty.' というエラーが発生する問題が修正されています。 #146 #149
- FluentBuilderMethodsPlugin が追加されました。 #142

## MyBatis Ignite 1.0.3

- Ignite のバージョン更新(1.7.0 → 1.8.0)

## MyBatis TypeHandlers-JSR310 1.0.2

- YearMonthTypeHandler, JapaneseDateTypeHandler が追加されました。 #12 #15
- OSGi 環境によっては Type handler が認識されない問題が修正されました。 #18


滞っていた #MyBatis 関連の更新情報を少しずつポストします。

## MyBatipse (Eclipse plugin for MyBatis)

https://marketplace.eclipse.org/content/mybatipse

### 1.0.23

- ステートメント(select, insert, etc.)や Result map の ID を変更したとき、これらの ID の参照を同時に更新するリファクタリング機能を追加しました。
- プロジェクトの Java コンパイラオプションで 'Store information about method parameters (usable via reflection)' が有効の場合は、引数の補完候補に宣言されている引数名を含めるようにしました。この設定は javac の "-parameters" オプションに相当します。
- `@ResultMap` で指定された Result map ID を検証するようにしました。
- `@One`, `@Many` の select 属性で指定された ID を検証するようにしました。

### 1.0.24

- `@ResultMap` の ID がハイパーリンクになりました。
- `@One`, `@Many` の select 属性がハイパーリンクになりました。
- XML の mapper / config ファイルで jdbcType の値が補完できるようになりました。
- `@Results` で定義されている Result map を XML ファイルの `<resultMap />` 要素に移動する Quick Assist を追加しました。
- Type alias の設定で、package を指定する際にワイルドカードを指定できるようになりました。

1.0.24 は Eclipse 4.4 未満で動作する最後のバージョンとなる予定です。


Released MyBatipse (Eclipse plugin adding support for MyBatis) 1.0.22.

Only one minor bug fix this time.

Enjoy!

https://github.com/mybatis/mybatipse/issues?q=is%3Aissue+is%3Aclosed+milestone%3A1.0.22

#MyBatis 関連のリリース情報です。

- MyBatis Generator 1.3.4
- MyBatis Ignite 1.0.2
- MyBatis Guice 3.8

### MyBatis Generator 1.3.4

機能追加:
- columnOverride 要素に GENERATED ALWAYS として定義された列を示す isGeneratedAlways 属性が追加されました。 生成される INSERT, UPDATE 文から除外されます。 #104
- ConnectionFactory をカスタマイズできるようになりました。 #106
- 自動生成されるコメントの日付書式をカスタマイズできるようになりました。 #108
- 多くの列の内一部のみを生成対象にしたいケースでの定義を簡単にするため ignoreColumnsByRegex という要素が追加されました。 #118
- 生成される Mapper, SQLProvider の名前をテーブルごとにカスタマイズできるようになりました。 #119
- Eclipse で Generator を外部ツールとして実行できるようになりました(詳細は Eclipse のヘルプ参照)。従来のコンテクストメニューから実行する方法は非推奨となります。 #120 #133
- countByExample メソッドの返り値が int から long に変更されました。 #125
- 自動される JavaDoc タグが @mbggenerated から @mbg.generated に変更されました。 #130

不具合修正:
- Eclipse プラグインで繰り返し生成処理を実行した場合に結果が微妙に変わる問題が修正されています。 #129
- #109 #116 はコーナーケースです。たぶん。

MyBatis Generator Eclipse プラグインは Marketplace にも登録されたので、より簡単にインストールできるようになりました。
https://marketplace.eclipse.org/content/mybatis-generator

GitHub のリリースページはこちらです。
https://github.com/mybatis/generator/releases/tag/mybatis-generator-1.3.4

### MyBatis Ignite 1.0.2

- Apache Ignite のバージョンを 1.7.0 に更新。
- Ignite インスタンスが既に動作している場合は新しいインスタンスを起動しないように修正。

GitHub のリリースページはこちらです。
https://github.com/mybatis/ignite-cache/releases/tag/mybatis-ignite-1.0.2

### MyBatis Guice 3.8

- Core 側での Configuration オプションの変更に対応できるようになりました。 #42, 60, 79
- Druid (https://github.com/alibaba/druid) のサポートが追加されました。 #57
- 総称型の TypeHandler を複数のクラスに適用できるようになった …で良いのかな。 #64
- @Transactional アノテーションが合成メソッドに適用されない問題を修正しました。 #71
- ひとつの TypeHandler を複数のモジュールに追加した場合に CreationException が発生する問題を修正しました。 #76

GitHub のリリースページはこちらです。
https://github.com/mybatis/guice/releases/tag/mybatis-guice-3.8


MyBatis 3.4.1 がリリースされました。

機能追加

- Java 8 の '-parameters' コンパイラーオプション有効時に引数を実名で参照できるようになった。 #549
- mybatis-typehandlers-jsr310 1.0.1 で追加された Year/MonthTypeHandler が自動検出されるようになった。 #646
- オブジェクトの配列を返す @Select を定義できるようになった(プリミティブ型の配列は対象外)。 #669
- XML の設定ファイルで reflectorFactory を指定できるようになった。 #657

不具合修正

- resultMap を循環参照しているケースで意図しない値が設定される。 #215
- 引数に @Param 指定のある SELECT を association/collection の select 属性で指定すると例外が発生する。 #649
- IBM WAS (WebSphere Application Server) 8.5.5.9 で起動時のアノテーションスキャン時に RuntimeException が発生する。 #706
- Cursor を返す @Select ステートメントでエラーが発生する。 #661
- Cursor を返すステートメントで RowBounds が指定できない。 #667
- Kylin の JDBC ドライバーで NullPointerException が発生する。

旧バージョンから移行する場合の注意点

- 引数を参照する箇所でインデックスを指定する旧書式 #{0}, #{1}, ... を使っていて、尚且つ Java 8 の -parameters 付きでコンパイルしている場合は useActualParamName="false" を設定する必要があります。

全チケットのリストは https://github.com/mybatis/mybatis-3/issues?utf8=%E2%9C%93&q=milestone%3A3.4.1 です。

MyBatis Generator 1.3.3 がリリースされてます。
リリースの時間が取れなかったということで実に4年ぶりの更新。
Google Code の終了で使えなくなっていた Eclipse プラグインの更新サイトも Bintray で復活してます。
https://dl.bintray.com/mybatis/mybatis-generator/

以下、追加機能のリストと...

- Java の予約語が列名に使われている場合に警告を出力するようになった。 #4
- Maven プラグインでログが Maven 標準のログに出力されるようになった。 #11。
- 生成される @ResultMap では resultMap が完全修飾名で参照されるようになった。 #18
- DB 側で定義されている REMARKS をコメントとして生成する RemarksCommentGenerator が追加されました。 #23
- MySQL でサイズが 1 より大きい BIT 型の列は boolean ではなく byte[] 型のプロパティが生成されるようになった。 #67
- EqualsHashCodePlugin に親クラスの実装を呼び出すオプションが追加されました。 #61

...修正された不具合のリストです。

- 生成される XML が前回の生成結果と微妙に異なる場合がある(属性の順番とか空白の有無とか改行コードとか)。 #14 #87
- EqualsHashCodePlugin が配列型のプロパティに対して Arrays.equals() ではなく Object.equals() を生成してしまう。 #10
- Root Class で総称型が指定された場合に生成が失敗する。 #46
- 総称型のクラスに対して生成されるファイルの名前に型引数が含まれてしまう。 #97

正しく把握できていない可能性があるので、もしおかしなところがあれば指摘して頂けると助かります。
全チケットのリストはこちらです。
https://github.com/mybatis/generator/issues?q=milestone%3A1.3.3+is%3Aclosed


G+ は人の気配がないのでサボり気味ですが、MyBatis 関連の更新情報です。

MyBatis Migrations 3.2.1

- ID にタイムスタンプではなく 001, 002, ... のような連番を指定できるようになりました。 #14
- script コマンドに特別な引数 pending と pending_undo が追加されました。未適用の migration だけを対象にしたスクリプトを生成する際にバージョンの指定が省略できます。 #29
- status コマンドで、description にドットが含まれていると以降の文字列が表示されない問題を修正しました。 #13

migrations-maven-plugin 1.1.3

- Migrations 3.2.1 への対応 #21, #22
- new コマンド実行時に migration.template オプションが適用されない問題を修正しました。 #23

MyBatis Ignite 1.0.1

- 依存する Apache Ignite のバージョンが 1.6.0 に更新されました。

MyBatipse (Eclipse プラグイン) は少しずつ機能追加を重ねて 1.0.20 になっています。

- 個人プロジェクトだったのを MyBatis Organization に移しました。
- 細かい変更が多いので変更内容はトラッカーで確認してください。

それから、MyBatis 3.4.1 が間もなくリリースされる予定です。


Post has attachment
MyBatis 3.4.0, MyBatis-Spring 1.3.0, MyBatis-Spring-Boot-Starter 1.1.1 がリリースされました。

MyBatis 3.4.0 (後方非互換の変更あり)

- SELECT 文から Cursor を返すメソッドが追加されました(#437)。
- Spring の @Transaction で指定した timeout 設定が正しく適用されるようになりました(#610)。
- Generic type のサポートが強化されています(#321, #581)。汎用の mapper を作りたいという要望は多いようで、動的な条件を含むものはともかく INSERT や UPDATE、マスター系の SELECT などは SQL 書かずに使えると便利かもですね。
- 先日公開された JSR-310 に含まれている Type Handler を自動検出できるようになりました(#597)。
- @Mapper アノテーションが追加されました。Spring などの外部フレームワークと連携する際にマーカーとして利用することを想定しているみたいです。

後方非互換となるのは下記の2点です。

- 新メソッド Transaction#getTimeout() が追加されたので、このインターフェイスを実装したクラスを作成している場合は更新する必要があります。
- @Optional(flushCache) が boolean ではなく Enum を取るようになっています。明示的に flushCache を指定している場合は修正が必要です。
- StatementHandler#prepare() の引数が変わっているので、このメソッドを指定したプラグインを書いている場合は修正が必要です。

MyBatis-Spring 1.3.0 (MyBatis 3.4.0 に上げる必要があります)

- こちらも Cursor のサポートが追加されています。元々 Spring Batch で使うことを想定した PR だったようですね。
- SqlSessionFactoryBean を定義する際に MyBatis の設定ファイルが必須でなくなりました。

MyBatis-Spring-Boot 1.1.1(MyBatis 3.4.0, MyBatis-Spring 1.3.0 が必要)

- @Mapper アノテーションが付いているインターフェイスだけが Mapper として自動検出されるようになったみたいです。

詳細はトラッカー参照ということで。
MyBatis 3.4.0 : https://github.com/mybatis/mybatis-3/issues?q=milestone%3A3.4.0+is%3Aclosed

MyBatis-Spring 1.3.0 : https://github.com/mybatis/spring/issues?q=milestone%3A1.3.0+is%3Aclosed

MyBatis-Spring-Boot 1.1.1 : https://github.com/mybatis/spring-boot-starter/issues?q=milestone%3A1.1.1+is%3Aclosed

近い内に migrations, migrations-maven-plugin もリリースされる予定です。


Post has attachment
MyBatis 関連のリリース情報です。

急成長中の MyBatis-Spring-Boot-Starter は 1.0.2 がリリースされています。
https://github.com/mybatis/spring-boot-starter
MyBatis は中国、韓国のユーザーが圧倒的に多い印象ですが、このプロジェクトのおかげで他の地域にも広がってるような気がします。
このリリースでは設定によって生じる問題がいくつか解消されています。同時にリリースされた MyBatis-Spring 1.2.5 と併せてお使いください。

それから JSR-310 : Date and Time API 用のタイプハンドラーをまとめた MyBatis-TypeHandlers-JSR310 の 1.0.0 がリリースされています。
https://github.com/mybatis/typehandlers-jsr310
MyBatis-3.3.1 と組み合わせて使う場合は設定を追加する必要があります。3.3.1 より後のバージョンでは自動検出が実装されているはずです。
Wait while more posts are being loaded