手写mybatis框架-增加缓存&事务功能

本文介绍了手写mybatis框架时如何增加缓存和事务功能。缓存部分包括自定义的Cache接口及其实现,如SimpleCache和LruCache,详细解释了LruCache的LRU淘汰策略。在事务功能部分,讲解了Transaction接口及其实现SimpleTransaction,通过管理Connection实现事务控制。项目代码经过测试,可观察到缓存更新和事务管理的效果。
摘要由CSDN通过智能技术生成

增加代码详解

缓存 com.simple.ibatis.cache

缓存接口-Cache

public interface Cache {
   

    /**放入缓存*/
    void putCache(String key,Object val);

    /**获取缓存*/
    Object getCache(String key);

    /**清空缓存*/
    void cleanCache();

    /**获取缓存健数量*/
    int getSize();

    /**移除key的缓存*/
    void removeCache(String key);
}

自定义框架缓存接口,提供基本的增删改查功能。

缓存基本实现类-SimpleCache

public class SimpleCache implements Cache{
   
    // 内部使用HashMap作为缓存实现
    private static Map<String,Object> map = new HashMap<>();
   // 调用map.put()方法实现存缓存功能
    @Override
    public void putCache(String key, Object val) {
   
        map.put(key,val);
    }
    // 调用map.get()方法实现取缓存功能
    @Override
    public Object getCache(String key) {
   
        return map.get(key);
    }
    // 调用map.clear()方法实现清空缓存功能
    @Override
    public void cleanCache() {
   
        map.clear();
    }
   // 调用map.size()方法获取缓存数量
    @Override
    public int getSize() {
   
        return map.size();
    }
   // 调用map.remove()方法移除缓存
    @Override
    public void removeCache(String key) {
   
        map.remove(key);
    }
}

simple-ibatis完成对HasaMap的封装,实现了基本的缓存获取,删除,清除等功能。

具备LRU淘汰策略-LruCache

/**
 * @author xiabing
 * @description: 缓存包装类,具备Lru淘汰策略功能
 */
public class LruCache implements Cache{
   
    // 默认缓存数
    private static Integer cacheSize = 100;
   // 负载因子
    private static Float loadFactory = 0.75F;
   // 真实缓存
    private Cache trueCache;
   // 重写LinkedHashMap方法实现Lru功能
    private Map<String
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值