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