■keyPropertyプロパティの値の設定
データベース側で自動生成されたキーを取得する場合に自動生成されたキーが格納される列名を指定するためのプロパティkeyPropertyを指定必須に変更しました。
変更前: keyPropertyプロパティを指定しない場合はデフォルトで“id”が設定される
変更後: 自動生成されたキーを取得する場合はkeyPropertyプロパティの指定が必須
以下の条件に該当する場合はアプリケーションの修正をしてください。
条件 | 影響 | 修正方法 |
以下のすべての条件に該当する場合です。
| 自動生成されたキーの取得に失敗します。 | keyPropertyプロパティに“id”を設定してください。 |
■JdbcTransactionクラスを継承したクラスの変数名の変更
MyBatisが提供するJdbcTransactionクラスで使用している変数名を変更しました。
変更前: autoCommmit
変更後: autoCommit
以下の条件に該当する場合はアプリケーションの修正をしてください。
条件 | 影響 | 修正方法 |
以下のすべての条件に該当する場合です。
| 以下の影響があります。
| JdbcTransactionクラスを継承したクラスで使用している変更前の変数名を変更後の変数名に修正してください |
■BaseTypeHandlerクラスを継承したクラスでのNULL値変換処理の追加
MyBatisが提供するBaseTypeHandlerクラスの処理を変更しました。
変更前: SQL文の結果がSQLのNULLの場合の変換処理をBaseTypeHandlerクラスで行う
変更後: SQL文の結果がSQLのNULLの場合の変換処理を、BaseTypeHandlerクラスを継承したクラスで行う
以下の条件に該当する場合はアプリケーションの修正をしてください。
条件 | 影響 | 修正方法 |
以下のすべての条件に該当する場合です。
| BaseTypeHandlerクラスの以下のメソッドの戻り値が変わります
変更前:
変更後:
| SQL文の結果がSQLのNULLの場合は、条件に記載したBaseTypeHandlerクラスを継承したクラスのメソッドの戻り値をnullにするように修正してください。 |
アプリケーションの修正例を以下に示します。
例
修正前
... public class CustomeIntegerTypeHandler extends BaseTypeHandler<String> { ... @Override public Integer getNullableResult(ResultSet rs, String columnName) throws SQLException { ... // SQLの結果がSQL NULLを判定せずに値を返す return rs.getInt(columnName); } @Override public Integer getNullableResult(ResultSet rs, int columnIndex) throws SQLException { ... // SQLの結果がSQL NULLを判定せずに値を返す return rs.getInt(columnIndex); } @Override public Integer getNullableResult(CallableStatement cs, int columnIndex) throws SQLException { ... // SQLの結果がSQL NULLを判定せずに値を返す return cs.getString(columnIndex); } ... } |
修正後
... public class CustomeIntegerTypeHandler extends BaseTypeHandler<String> { ... @Override public Integer getNullableResult(ResultSet rs, String columnName) throws SQLException { ... int result = rs.getInt(columnName); // SQLの結果がSQL NULLかを判定し、SQL NULLの場合はnullを返し、SQL NULLではない場合は値を返す if ( result == 0 && rs.wasNull() ) { return null; } else { return result; } } @Override public Integer getNullableResult(ResultSet rs, int columnIndex) throws SQLException { ... int result = rs.getInt(columnIndex); // SQLの結果がSQL NULLかを判定し、SQL NULLの場合はnullを返し、SQL NULLではない場合は値を返す if ( result == 0 && rs.wasNull() ) { return null; } else { return result; } } @Override public Integer getNullableResult(CallableStatement cs, int columnIndex) throws SQLException { ... int result = cs.getInt(columnIndex); // SQLの結果がSQL NULLかを判定し、SQL NULLの場合はnullを返し、SQL NULLではない場合は値を返す if ( result == 0 && cs.wasNull() ) { return null; } else { return result; } } ... } |