なぜMyBatisキャッシュを無効にしましたか?
private void putAncestor(CacheKey rowKey, Object resultObject, String resultMapId, String columnPrefix) {
if (!ancestorColumnPrefix.containsKey(resultMapId)) {
ancestorColumnPrefix.put(resultMapId, columnPrefix);
}
ancestorObjects.put(rowKey, resultObject);
}
if (combinedKey != CacheKey.NULL_CACHE_KEY) nestedResultObjects.put(combinedKey, resultObject);
mybatisキャッシュの対象は、データベースreult SetがDefault Result SetHandler処理を経て生成したjavaオブジェクトです.このようにキャッシュする意味は大きくないです.
(1)電子商取引のウェブサイトに一定の規模のデータ量があり、内蔵のcache方式は役に立ちません.キャッシュオブジェクトは意味がないのに、なぜMemcachedが、redisは単一のタイプをサポートしていないのですか?(2)クエリーの結果集をキャッシュすることはMyBatisフレームが得意ではなく、sql mapperという特性に専念するべきです.このフレームを採用したアプリはキャッシュを構築するのにもっと合理的で、例えばredis、memcachedを採用します.
ですから、私たちはmybatisを使って、結果を目的に集めたマッピング機能です.
キャッシュの設定を無効にします.
<configuration>
<settings>
<setting name="cacheEnabled" value="false"/>
<setting name="localCacheScope" value="STATEMENT"/>
<setting name="jdbcTypeForNull" value="NULL"/>
</settings>
<mappers>
<mapper resource=""/>
</mappers>
</configuration>