第一个问题,你是根据json去建一个数据表,实际上更需要往一个已存在的表里存取数据,这里边就有双向匹配的问题。解决这个问题我的方法是采用模板,用表结构建立模板,由模板建立struct,然后用模板去套JSON,把他的数据按到struct里。
里边有个区别,它可以没有模板,数据绑定到JSON里即可(要是数组操作你可怎么办?1000行的数据你得往1000个JSON里绑定,有模板的往数组里绑就行)。你的程序认识啥就建啥,不会出现你不认识的数据结构。双向匹配就需要处理数据库所有类型的问题。到底有多少类型不是你说了算的。如日期类型问题,日期格式不同不算另一个类型,一个类型可以有不同的格式,格式放在模板里,数据库所支持的格式你都要处理。JSON里有一个日期数据 你很难判断它是什么格式,所以要看模板里怎么说,模板的格式来自数据表结构,有的数据库,如ORACLE,并没有为日期时间列规定格式,我还需要为它补充一个列类型修正表,指出某表某列需要某类型某格式,在生成模板时需要读一下这个表。
所以,模板处理是orm的底层机制。
要先设计模板系统。即使有动态反射,也需要模板,因为类里边不是所有的内容都进数据库,你得把需要进入数据库的指示出来。我为JAVA也写过模板系统。
【 在 yuanmo 的大作中提到: 】
: 给AI的指令:
: --------
: 我需要做个简洁的ORM,你先给我写一个最简版本的示例,输入一批带不同类型的字段数据(JSON格式),比如姓名、年龄、出生日期、注册时间。你可以动态分析出数据库字段,并创建SQL表格,输入数据入库。然后再从数据库中获取这些数据,并映射输出到C++类型。这里的核心是,你实现的时候并不知道表结构,也不知道JSON代表的数据结构。一切都是动态的,数据结构以JSON数据结构为准。设计的关键是要优美,其次运行时要高效。程序只写在一个C++里面,控制篇幅。SQL用SQLite。
: ...................
--
修改:ylh1969 FROM 221.221.54.*
FROM 221.221.54.*