私の環境は次のとおりです。
春ブーツ+ MyBatisの+のOracle 10g + Jdk1.8オラクルキャッシュ混乱(最新を取得することはできません)
私はこのようにOracleでテーブルという名前の本を得ました:
+---------+------+--------+
| book_id | name | number |
+---------+------+--------+
| 1 | b1 | 123 |
| 2 | b2 | 123 |
| 3 | b3 | 2343 |
+---------+------+--------+
3 rows in set (0.00 sec)
私はそれが動作するようになったと私はPLSQLで、この表の中に2つの以上のレコードを挿入した後、私は.Butを書いたマッパーと正常に表示され、私はまだ代わりに、すべての5(以下など)の同じ3つのレコードを得ました私はmybatisマッパーでそれを照会するとき。
+---------+------+--------+
| book_id | name | number |
+---------+------+--------+
| 1 | b1 | 123 |
| 2 | b2 | 123 |
| 3 | b3 | 2343 |
| 4 | b4 | 22343 |
| 5 | b5 | 43 |
+---------+------+--------+
5 rows in set (0.00 sec)
次に、このようにoracleでキャッシュ戦略を変更します。それは、再び働い
alter table book nocache
!全5つのレコードはMyBatisのを使用して、正常に表示されている理由?私は明確なOracleのキャッシュ毎回?これは、そこよりよい解決策をright.Isを感じていないべきmapper.But? 回答が参考になります。 THX
application.properties
# Spring
spring.resources.static-locations=classpath:/static/
# MyBatis
mybatis.configuration.map-underscore-to-camel-case=true
mybatis.configuration.local-cache-scope=statement
# DataSource 1
spring.datasource.db1.url=jdbc:oracle:thin:@*******
spring.datasource.db1.username=***
spring.datasource.db1.password=***
spring.datasource.db1.driver-class-bookName=oracle.jdbc.OracleDriver
マッパー
@Mapper
@Qualifier("bookMapper")
public interface BookMapper {
@Select({"select * from book"})
@Options(useCache = false)
@Results({
@Result(property = "bookId",column = "book_id"),
@Result(property = "bookName",column = "book_name"),
@Result(property = "bookNumber",column = "book_number")
})
List<BookEntity> getALL();
// insertBook();
}
エンティティ
public class BookEntity {
long bookId;
String bookName;
int bookNumber;
//getters and setters
}
コードを追加してください。ちょうどテキストを見て理解するのは非常に難しいです。あなたのマッパーと設定クラスを表示する –
また、ダオ層でデバッグすることをお勧めしますか?db/ –
で追加した後にすべてのレコードを取得していますか?私のコードを追加しました。 – xuqh