设计ORM系列
Posted 一介闲休
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了设计ORM系列相关的知识,希望对你有一定的参考价值。
如何对SQL语句使用起来特别爽,或相对于对象操作而言,更喜欢sql语句,那后面就可以不要看了
其实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
以上是关于设计ORM系列的主要内容,如果未能解决你的问题,请参考以下文章