ORM就是將數據庫中的表映射成一個對象實體A,對A進行操作,就相當於對數據庫直接進行操作,完成這個過程,其實只要你好好想想你是怎麼操作數據庫的,然後將類似的行爲換成對象即可。
要設計一個ORM,首先我們需要以下幾步:
- step1: 先準備好一個對象A和數據庫中某張表對應T(A->T)
- step2: 我們知道當你創建一個表時,一般使用create命令如下:
CREATE TABLE database_name.table_name(
column1 datatype PRIMARY KEY(one or more columns),
column2 datatype,
column3 datatype,
…..
columnN datatype,
);
從上面看就對應着表名,表字段名,字段類型,是否是主鍵等,此時我就要想着如何根據A中成員變量,而知道T的這些內容?如果你能根據A能夠轉化成T,那此時你就已經將A映射到了T了
- step3: 映射過程完成後,接下來就是要具備表的四種操作:增/刪/改/查,回憶下四種命令寫sql語句是怎麼寫的?現在我們以查來說:
SELECT * FROM T WHERE field1 >= ? OR field2 >= ?;
其實說白了,就是構建where語句的過程,我們可以根據一些條件,構建where語句,然後映射到成一個sql語句,根據sql語句我們就可以查詢到一組符合條件的數據(cursor),然後就是將cursor數據轉化成A
現在總結下step3兩個過程:condition ->sql語句;cursor reslut->A,完成這三部,基本上就完成了一個ORM的設計,如果後面需要對性能,細節進行優化,就可以慢慢來。畢竟主功能已具備。
注意:如果想線程安全進行數據庫操作可以考慮 db.enableWriteAheadLogging();
總結下:
- a) 根據A得到T,
- b) 根據condition構建where,拼接成sql;
- c)根據sql從T中查出cursors;
- d)cursor轉化成A