QtDao

QtDao是一个用于qt中数据库操作与c++对象操作进行转换的库。通常情况下,在Qt中使用不同的数据库插件进行数据库的查询后,得到的是通用的QVariant数据列表,然而这些数据我们得手动转换成业务中的数据模型,这是个重复机械的操作。通过QtDao库,自动完成数据库查询结果到c++对象的转换,支持基本的增删改查操作,同时支持一些常用的特性(创建数据库、数据库升级、多线程查询与连接池的管理等,这也是目前主流数据库框架支持的一些特性),其设计使用目前主流的链式调用设计模式,一个简单的数据库查询如下:

TestTb::Fields sf;
TestTb data = dao::_select<TestTb>()
        .filter(sf.name == "Alice", _or(sf.age == 18, sf.name == "Bob"))
        .build().one();

等同于执行以下sql语句:

select *from testtb where name='Alice' and (number=18 or name='Bob')

工作原理

QtDao整个框架依赖于c++模板,对类型的限制和转换的目标对象都通过模板支持,同时依赖于代码生成器(vscode插件市场中搜索QtDao)将数据库表配置转换成c++模型类(并附带一些转换工具函数),通过模板和代码生成器的配合将数据库查询语句与c++类之间完成相互转换。

如何安装使用

在使用QtDao库之前,需要完成以下步骤的准备工作:

  1. 编写数据表xml配置文件,使用生成器生成c++模型类
  2. 生成并静态链接到QtDao库,将生成器生成的文件加入到编译列表中
  3. 编写初始化代码

支持的数据库

经过大量的测试和版本迭代,目前受支持的数据库操作有3种:sqlite、mysql、sqlserver,在未来将计划加入更多的数据库支持,不同的数据库操作使用统一的api,仅仅通过修改少量的连接配置,就能够实现不同数据库之间的快速切换使用。

results matching ""

    No results matching ""