文章详情

短信预约-IT技能 免费直播动态提醒

请输入下面的图形验证码

提交验证

短信预约提醒成功

如何使用C++的ORM框架QxORM

2023-07-02 12:59

关注

这篇文章主要讲解了“如何使用C++的ORM框架QxORM”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“如何使用C++的ORM框架QxORM”吧!

QxORM中,我们用的最多的无非是这两点

官方表述是这样的:

持久性:支持最常见的数据库,如SQLite、MySQL、PostgreSQL、Oracle、MS SQL Server、MongoDB(具有 1-1、1-n、n-1 和 n-n 关系);
序列化:JSON、二进制和 XML 格式;

简洁一点就是:

连接访问各类主流数据库

能够将数据导入导出

下面我们进入主题:

建立对象模型。相对于常规的结构体,只是多了一些宏定义与声明。

头文件:QxModels.h

#include "precompiled.h"struct User{    long id;    QString name;    int age;    QString hobbies;};QX_REGISTER_HPP_QX_DLL1(User, qx::trait::no_base_class_defined, 1)

源文件:QxModels.cpp

#include "precompiled.h"#include "qxmodels.h"#include <QxOrm_Impl.h>QX_REGISTER_CPP_QX_DLL1(User)namespace qx{    template <> void register_class(QxClass<User> & t)    {        // 设置表名        t.setName("User");        // 注册 User::id <=> 数据库中的主键        t.id(&User::id, "id");        // 注册 User::name 属性,使用的 key 是 name,version 是 1。        t.data(&User::name, "name", 1);        // 注册 User::age 属性,使用的 key 是 age。        t.data(&User::age, "age");        // 注册 User::hobbies 属性,使用的 key 是 hobbies。        t.data(&User::hobbies, "hobbies");    }}

连接数据库。

 QString in_db = QCoreApplication::applicationDirPath();    in_db.append("/database/plulocal.db");    QFile::remove(in_db);    qx::QxSqlDatabase::getSingleton()->setDriverName("QSQLITE");    qx::QxSqlDatabase::getSingleton()->setDatabaseName(in_db);    qx::QxSqlDatabase::getSingleton()->setHostName("localhost");    qx::QxSqlDatabase::getSingleton()->setUserName("root");    qx::QxSqlDatabase::getSingleton()->setPassword("");    qx::QxSqlDatabase::getSingleton()->setSqlPlaceHolderStyle(qx::QxSqlDatabase::ph_style_2_point_name);    qx::QxSqlDatabase::getSingleton()->setTraceSqlQuery(true);    qx::QxSqlDatabase::getSingleton()->setTraceSqlRecord(false);

使用ORM。建表,新增,简单查询,复杂查询等等

// 建表    QSqlError daoError1 = qx::dao::create_table<User>();    // 产生100条模拟数据    for(int in_idx=0; in_idx<100; ++in_idx)    {        auto in_user = new User();        in_user->name = "lzw"+QString::number(in_idx);        in_user->age = 20+in_idx;        in_user->hobbies = "play";        auto daoError1 = qx::dao::insert(in_user);    }    // 查询单条记录    User in_pointUser; in_pointUser.id = 3;    qDebug()<<in_pointUser.name;    QSqlError daoError11 = qx::dao::fetch_by_id(in_pointUser);    qDebug()<<in_pointUser.name;    // 查询一定年龄段的集合记录    //typedef std::shared_ptr<User> UserPtr;    //typedef qx::QxCollection<long, UserPtr> UserList;    UserList in_userList;    qx_query in_query("select * from user where age>=20 and age<=25");    daoError11 = qx::dao::execute_query(in_query, in_userList);    qAssert(! daoError11.isValid()); qAssert(in_userList.count() > 0);    qx::dump(in_userList);

有图有真相。执行前:

如何使用C++的ORM框架QxORM

执行后:(并不需要写一条sql语句,当然也支持写原生sql语句)

如何使用C++的ORM框架QxORM

补充:序列化的两个函数

// 导出binary流    qx::serialization::qt::to_file(in_pointUser, "user.txt");    // 导出json文本    qx::serialization::json::to_file(in_userList, "list_of_user.json");

感谢各位的阅读,以上就是“如何使用C++的ORM框架QxORM”的内容了,经过本文的学习后,相信大家对如何使用C++的ORM框架QxORM这一问题有了更深刻的体会,具体使用情况还需要大家实践验证。这里是编程网,小编将为大家推送更多相关知识点的文章,欢迎关注!

阅读原文内容投诉

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

软考中级精品资料免费领

  • 历年真题答案解析
  • 备考技巧名师总结
  • 高频考点精准押题
  • 2024年上半年信息系统项目管理师第二批次真题及答案解析(完整版)

    难度     813人已做
    查看
  • 【考后总结】2024年5月26日信息系统项目管理师第2批次考情分析

    难度     354人已做
    查看
  • 【考后总结】2024年5月25日信息系统项目管理师第1批次考情分析

    难度     318人已做
    查看
  • 2024年上半年软考高项第一、二批次真题考点汇总(完整版)

    难度     435人已做
    查看
  • 2024年上半年系统架构设计师考试综合知识真题

    难度     224人已做
    查看

相关文章

发现更多好内容

猜你喜欢

AI推送时光机
位置:首页-资讯-后端开发
咦!没有更多了?去看看其它编程学习网 内容吧
首页课程
资料下载
问答资讯