JFinal2.2初体验之数据缓存处理(九)

1、关于数据缓存(Cache )

在应用程序中可使用缓存的环节是比较多的,对于如何来使用缓存,为什么要使用缓存以及生命时候使用缓存技术,有兴趣的小伙伴们可以去阅读其它大牛的技术文章或博客。我们今天只是对jfinal的数据缓存和插件使用做一个简单的科普。

缓存的使用主要还是要根据应用的特性来考虑。首先得分析应用的“变”与“不变”,哪些地方是主要用来展示的,数据操作的不是很频繁的话,那可以使用缓存来提升应用的性能。

EHCache 是一个纯java的在进程中的缓存,它具有以下特性:快速,简单。接下来我们一起来学习在jfinal中如何使用ehCache。

1.1下载jfinal框架中使用到的jar包

jar包下载地址:http://www.jfinal.com/download?file=jfinal-2.2-all.zip(需注册账号)

序列 名称 备注
1、 ehcache-core-2.5.2.jar 缓存核心包
2、 slf4j-api-1.6.1.jar slf4j核心接口包
3、 slf4j-log4j12-1.6.1.jar slf4j调用log4j的实现包
1.2添加jar包到project(工程)

copy文件到projectName\WebRoot\WEB-INF\lib目录下。

1.3 添加ehcache.xml文件

copy文件到ehcache.xml文件到project中src路径下。

2、写一点代码使用cache
2.1我们来为数据读取作一个简单的数据缓存操作。翠花上代码:
   /**
    * @author yetangtang
    * @see 查询用户信息
    * @param void
    * @return Page list
    */
    public Page queryUsetrList(){
        //使用Db中的paginate(分页)方法。同model操作一样
        Page list = Db.paginateByCache("userInfo", "userList", 1, 4, "select * ","from user where id > ? ",2);
        //Page list = Db.paginate(1, 4, "select * ","from user where id > ? ",2);
        //返回查询结果
        return list;
    }
2.2配置ehcache.xml文件


         
    
    
        
     
    
    

    
   
    
            
    
    
    

    
    
    

3、探讨实现
3.1查看方法

Db操作类中实现了三种分页缓存方法,我们一起来看一下第一种。第一个参数是cacheName缓存名称,第二个是Object key(数据对象的名字,你可以这么理解),剩下的都比较熟悉,在此就略过。

    /**
     * Paginate by cache.
     * @see #paginate(int, int, String, String, Object...)
     * @return Page
     */
    public static Page paginateByCache(String cacheName, Object key, int pageNumber, int pageSize, String select, String sqlExceptSelect, Object... paras) {
        return dbPro.paginateByCache(cacheName, key, pageNumber, pageSize, select, sqlExceptSelect, paras);
    }
3.2不知代码真面目,只缘身在代码外
    /**
     * Paginate by cache.
     * @see #paginate(int, int, String, String, Object...)
     * @return Page
     */
    public Page paginateByCache(String cacheName, Object key, int pageNumber, int pageSize, String select, String sqlExceptSelect, Object... paras) {
        //获取配置文件
        ICache cache = config.getCache();
        //尝试从缓存中获取数据对象信息
        Page result = cache.get(cacheName, key);
        //如果缓存中没有数据信息,则需要去执行查询;
        //得到查询结果后,并将数据信息添加到缓存中。
        if (result == null) {
            result = paginate(pageNumber, pageSize, select, sqlExceptSelect, paras);
            cache.put(cacheName, key, result);
        }
        return result;
    }
3.3眼见为实,断点测试一下
JFinal2.2初体验之数据缓存处理(九)_第1张图片
首次读取数据会执行

恭喜,恭喜。至此,小伙伴们已经学会简单的使用缓存了。接下来,我们会继续玩一些好玩的技能点。

PS:缓存虽好,依旧多结合自己系统的实际情况考虑。

你可能感兴趣的:(JFinal2.2初体验之数据缓存处理(九))