cached-query

jopen 10年前發布 | 10K 次閱讀 緩存服務器 cached-query memcached

介紹

我們常常有這樣的需求:當我們把memcached加入到項目后我還還要寫一個 cacheUtils 或者 cacheManager 之類的類來操作memcached。并且一般的操作不外乎是這種操作:

  1. 拿到一段sql,先去memcahed里面看下是否有緩存,如果有就直接返回結果

  2. 如果沒有就直接查詢數據庫

  3. 查到數據之后先保存到memcached里面再返回給上層調用者

這種需求基本上占了緩存操作的大部分情況。這三件事情寫起來很簡單,其實還是有一些代碼量的。cached-query 是一個輕量級的類庫,幫你做了以上三件事情,并且只提供一個方法就是通過sql查詢得出一個列表。

安裝

添加依賴到 pom.xml

<dependency>
  <groupId>org.crazycake</groupId>
  <artifactId>cached-query</artifactId>
  <version>1.0.0-RELEASE</version>
</dependency>

使用方法

建立一個配置文件 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<Student> list = q.queryList(sql, params, conn, Student.class);

注意事項

  • 要查詢并被實例化的類一定要實現Serializable接口

  • 實例化的類里面屬性的名字要取跟數據庫里面字段對應的駝峰式命名,比如數據庫中的字段是 student_name 對應的屬性就是 studentName

  • 類的屬性不能用基本類型,int要用Integer,float用Float,其他依次類推,其實這樣開發者養成一個好習慣也是很好的

項目主頁:http://www.baiduhome.net/lib/view/home/1411218274421

 本文由用戶 jopen 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
 轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
 本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!