簡易ORM Sqlite框架 一 查詢

2021-07-25 10:45:57 字數 2437 閱讀 3745

/**

* 獲取模型

*@param cursor

*@param classz

*@param

*@return

*/public

listgetmodel(final cursor cursor,classclassz)

class c = classz;

field fields = c.getdeclaredfields();

method methods = c.getdeclaredmethods();

listlist = new arraylist<>();

while(cursor.movetonext()) ;

object oj = null;

getresult(typename, oj, new valuetypeinte***ce()

@override

public

void

getvalue(boolean result)

@override

public

void

getvalue(float result)

@override

public

void

getvalue(double result)

@override

public

void

getvalue(long result)

@override

public

void

getvalue(string result)

@override

public

void

getvalue(byte result)

});try catch (illegalacces***ception e) catch (invocationtargetexception e)

}list.add(a);

}return list;

}/**

* 通過反射去例項化相應類

**@param

返回例項的泛型型別

*@return

*/public

static

t getinstance(class clazz) catch (instantiationexception e) catch (illegalacces***ception e) catch (exception e)

return

null;

}

我們傳入乙個cursor表和乙個我們要轉的model 的class例項,我們通過這個例項反射生成乙個物件,然後找到每個物件的set方法,因為要通過set方法來將cursor表中的值設進model中,到了這裡,我們已經能將乙個cursor表所有的物件對映成為乙個list物件了,我們編寫我們資料庫操作的查詢操作dbaction的query方法實現

@override

public

list

query(string tablenamele, string selection, string selectionargs, string orderby,class

classz)

}cursor cursor = db.query(tablenamele,columns,sb.tostring(),selectionargs,"","",orderby);

list

list = dbutils.getmodel(cursor,classz);

return

list;

}

我們需要傳入表名,查詢的條件以及model的對應的class例項,我們在這裡使用泛型而不是使用object是有好處的,因為泛型會在編譯是檢查型別,有什麼問題我們在編譯時就發現了,使用object會不安全,並且還需要手動轉換型別,很麻煩,所以要使用泛型,這樣乙個方法可以變得很靈活,不過也有壞處,具體好壞我就不在這裡說了,然後我們userdao的實現

@override

public user get(string id) ,new string,null,user.class);

daohelp.close();

if(null != list && list.size() > 0)

return

list.get(0);

else

return

null;

}

我們通過id去查詢資料庫 並且取出資料,呼叫方式

findviewbyid(r.id

.btnquery).setonclicklistener(

new view.onclicklistener()

});

django模型類一查多,多查一

from django.db import models class book models.model 圖書 name models.charfield max length 30,verbose name 書名 pub date models.datefield verbose name 發布日...

2867 加法表,一查就清楚

time limit 1 sec memory limit 128 mb submit 188 solved 131 submit status web board 算乘法常要用乘法表,熊孩子小明做加法也要查表!這嬌慣出來的孩子啊,給他乙個吧 請輸入1 9中的乙個數n,輸出n以內的所有數相加之和 乙...

乙個簡易gopool框架

在 go 中起協程是非常方便的,節省資源的,協程棧大小最大為2kb,所以乍一看在 go 中設計協程池是多此一舉的 但通過 pool 可以提供統一的多工處理模型,統一管理任務處理過程中的監控 告警 且實現資源隔離 不同協程池處理不同型別任務 最重要的一點 通過確定數量的 worker 可以實現對大事務...