当前位置: 首页 > wzjs >正文

上海跨境电商网站开发公司排名简诉网站建设小组的五类成员

上海跨境电商网站开发公司排名,简诉网站建设小组的五类成员,河北建设网工程信息网,长沙人才市场招聘以下是MyBatis缓存配置的完整示例,包含一级缓存、二级缓存、自定义缓存策略等核心场景,并附详细注释和总结表格: 1. 一级缓存(默认开启) // 使用同一SqlSession执行两次查询,自动命中一级缓存 try (SqlSe…

以下是MyBatis缓存配置的完整示例,包含一级缓存、二级缓存、自定义缓存策略等核心场景,并附详细注释和总结表格:
在这里插入图片描述


1. 一级缓存(默认开启)

// 使用同一SqlSession执行两次查询,自动命中一级缓存
try (SqlSession session = sqlSessionFactory.openSession()) {UserMapper mapper = session.getMapper(UserMapper.class);User user1 = mapper.selectById(1);  // 第一次查询(数据库)User user2 = mapper.selectById(1);  // 第二次查询(缓存命中)System.out.println(user1 == user2); // 输出:true
}

2. 二级缓存配置(XML方式)

<!-- UserMapper.xml -->
<mapper namespace="com.example.mapper.UserMapper"><!-- 开启二级缓存 --><cache eviction="FIFO"         <!-- 缓存回收策略:先进先出 -->flushInterval="60000"   <!-- 缓存刷新间隔:60秒 -->size="512"              <!-- 缓存最大条目数 -->readOnly="false"/>      <!-- 是否只读(false允许对象修改) --><select id="selectById" resultType="User">SELECT * FROM user WHERE id = #{id}</select>
</mapper>

3. 二级缓存注解配置

// UserMapper.java
@Mapper
@CacheNamespace(implementation = EhcacheCache.class, // 使用第三方缓存(如Ehcache)eviction = CacheNamespaceEvictionPolicy.FIFO,flushInterval = 60000,size = 512,readWrite = true
)
public interface UserMapper {User selectById(Integer id);
}

4. 缓存对象序列化配置

// User实体类需要实现Serializable接口
public class User implements Serializable {private Integer id;private String name;private transient Integer age; // transient字段不参与序列化// 省略getter/setter
}

5. 缓存手动操作示例

// 清除指定对象缓存
sqlSession.clearCache(); // 清除一级缓存
UserMapper mapper = sqlSession.getMapper(UserMapper.class);
mapper.selectById(1); 
sqlSession.commit(); // 触发二级缓存更新// 清除二级缓存
((org.apache.ibatis.session.Configuration)sqlSession.getConfiguration()).getCache("com.example.mapper.UserMapper").clear();

关键技术点总结表

场景配置方式适用情况核心注释
一级缓存默认开启(SqlSession级别)单次业务操作内多次查询不需要配置,关闭需调用sqlSession.clearCache()
二级缓存<cache>标签或@CacheNamespace跨SqlSession的全局缓存必须实现Serializable,需在Mapper配置中显式开启
缓存回收策略eviction="FIFO/LRU/SID"控制内存占用LRU(最近最少使用)最常用
缓存过期flushInterval="60000"定时刷新缓存毫秒单位,配合数据库数据变更频率设置
缓存容量size="512"控制内存使用根据业务数据量合理设置
缓存可写性readOnly="false"允许修改缓存对象readOnly为true时返回对象为不可变副本
第三方缓存implementation=EhcacheCache需要分布式缓存需引入对应依赖并配置缓存实现类

6. 核心配置注意事项:

  1. 序列化要求:被缓存的对象必须实现Serializable接口
  2. 事务边界:SqlSession关闭或提交(commit)会刷新二级缓存
  3. 并发控制readOnly="true"可避免并发修改问题
  4. 缓存失效:数据更新操作(insert/update/delete)会自动清除相关缓存
  5. 命名空间:二级缓存按Mapper命名空间隔离,需确保唯一性

7. 性能验证示例

// 验证二级缓存跨SqlSession命中
try (SqlSession session1 = sqlSessionFactory.openSession()) {UserMapper mapper1 = session1.getMapper(UserMapper.class);User user1 = mapper1.selectById(1); // 数据库查询
}try (SqlSession session2 = sqlSessionFactory.openSession()) {UserMapper mapper2 = session2.getMapper(UserMapper.class);User user2 = mapper2.selectById(1); // 二级缓存命中System.out.println(user1.equals(user2)); // 输出:true(值相等但对象不同)
}

需要进一步扩展场景(如条件缓存、自定义缓存实现)可补充说明。

http://www.dtcms.com/wzjs/595946.html

相关文章:

  • 国外网站建设品牌小程序服务器多少钱
  • 建站优化是什么做家政公司网站
  • 临沂网站建设费用自贡市城市建设投资开发集团有限公司网站
  • 学编程有用吗seo零基础视频教程
  • c语言做的网站常州网站支付通道建设
  • 沈阳网站制作公司云蓝图什么是网站流量优化
  • 杭州网站的特点施工企业的描述
  • 东莞市建设网站首页官网郑州中心站
  • 百度不收录哪些网站成都网站建设制作设计
  • 建设部网站危房鉴定标准规定wordpress页面显示分类目录
  • 备案网站到期了怎么办外贸crm客户管理软件
  • 贷款网站模板wordpress审计
  • 做聚会的网站网站资源建设方案
  • 江门网站长沙做网站工作室
  • 响应式网站无法做百度联盟会展公司
  • 免费一键生成logo网站网页访问禁止怎么恢复
  • 小型企业网站排名前十vs2013做的网站
  • 网站备案忘记密码怎么办什么是软件开发者
  • 专业柳州网站建设上海企业电话查询
  • 要给公司做一个网站怎么做的吗天元建设集团有限公司信息
  • 东莞公司网站做优化满山红厦门网站建设
  • 网站怎么做域名实名认证吗html加入wordpress
  • 可以直接做室内su的网站东莞智通人才网招聘
  • 整站下载器 做网站地图企业公司网
  • 淘客cms建站系统员工培训内容
  • 江苏高端网站建设襄阳网站seo厂家
  • HTML发布网站哪个网站做logo设计
  • 做爰的网站动态和静态网站的区别
  • 国内html5网站建设七冶建设集团网站 江苏
  • 自己公司做公益网站怎么弄电子商务网站建设合同