当前位置:  软件>java软件

cached-query

    来源:    发布时间:2014-12-15

    本文导语:  介绍 我们常常有这样的需求:当我们把memcached加入到项目后我还还要写一个 cacheUtils 或者 cacheManager 之类的类来操作memcached。并且一般的操作不外乎是这种操作:拿到一段sql,先去memcahed里面看下是否有缓存,如果有就直接返...

介绍

我们常常有这样的需求:当我们把memcached加入到项目后我还还要写一个 cacheUtils 或者 cacheManager 之类的类来操作memcached。并且一般的操作不外乎是这种操作:

  • 拿到一段sql,先去memcahed里面看下是否有缓存,如果有就直接返回结果

  • 如果没有就直接查询数据库

  • 查到数据之后先保存到memcached里面再返回给上层调用者

  • 这种需求基本上占了缓存操作的大部分情况。这三件事情写起来很简单,其实还是有一些代码量的。cached-query 是一个轻量级的类库,帮你做了以上三件事情,并且只提供一个方法就是通过sql查询得出一个列表。

    安装

    添加依赖到 pom.xml

      org.crazycake
      cached-query
      1.0.0-RELEASE
    

    使用方法

    建立一个配置文件 cached-query.properties  在classpath跟目录下,你可以放到 src/resources 下

    #cache type. [memcached]
    cache.type=memcached
    cache.host=127.0.0.1
    cache.port=11211
    cache.expire=1800

    建立你要查询的表对应的model

    public class Student implements Serializable{
    	private Integer studentId;
    	private String studentName;
    	public Integer getStudentId() {
    		return studentId;
    	}
    	public void setStudentId(Integer studentId) {
    		this.studentId = studentId;
    	}
    	public String getStudentName() {
    		return studentName;
    	}
    	public void setStudentName(String studentName) {
    		this.studentName = studentName;
    	}
    	
    }

    在你的代码中使用它

    CachedQuery q = CachedQuery.getInstance();
    String sql="select student_id,student_name from student where student_id=?";
    Object[] params = new Object[]{1};
    ArrayList list = q.queryList(sql, params, conn, Student.class);

    注意事项

    • 要查询并被实例化的类一定要实现Serializable接口

    • 实例化的类里面属性的名字要取跟数据库里面字段对应的驼峰式命名,比如数据库中的字段是 student_name 对应的属性就是 studentName

    • 类的属性不能用基本类型,int要用Integer,float用Float,其他依次类推,其实这样开发者养成一个好习惯也是很好的


        
     
     

    您可能感兴趣的文章:

     
    本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
    本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。












  • 相关文章推荐


  • 站内导航:


    特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

    ©2012-2021,,E-mail:www_#163.com(请将#改为@)

    浙ICP备11055608号-3