MyBatisでINSERT実行
ちょっとしたバッチの中でSELECTして加工したデータをMyBatisでINSERTしたかった
// まずMapperをSqlSessionから取得して
XXXMapper m = session.getMapper(XXXMapper.class);
System.out.print("Insert records...");
// Mapperに設定されてる関数からINSERT実行
m.insertByList(recordList);
System.out.println("OK!");
これでうまくいくはず…が、入らない…データが1つも入らない。
AutoCommitはデフォルトでOFF?
いろいろ検索してStackoverflowで同じような現象を見かけた
- Stackoverflow - why do myBatis insert/update functions now require a commit after adding FK to DB?
- MyBatis 3.0.1 insert problem
要は作成更新系のクエリを呼ぶときはcommit()
を実行しろということ。普段はSpringのほうでトランザクション管理をしているので気づかなかった。