亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

使用C++的ORM框架QxORM詳解

 更新時間:2022年06月26日 11:31:27   作者:Kevinsh.Lee  
這篇文章主要介紹了使用C++的ORM框架QxORM的相關知識,本文給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下

QxORM中,我們用的最多的無非是這兩點

官方表述是這樣的:

持久性:支持最常見的數(shù)據(jù)庫,如SQLite、MySQL、PostgreSQL、Oracle、MS SQL Server、MongoDB(具有 1-1、1-n、n-1 和 n-n 關系);
序列化:JSON、二進制和 XML 格式;

簡潔一點就是:

連接訪問各類主流數(shù)據(jù)庫

能夠?qū)?shù)據(jù)導入導出

下面我們進入主題:

第一步:建立對象模型。相對于常規(guī)的結(jié)構(gòu)體,只是多了一些宏定義與聲明。

頭文件:QxModels.h

#include "precompiled.h"
/***************************************************************
* @projectName  pluqt
* @brief        自定義ORM模型
* @author       lzw
* @date         2022-01-04
***************************************************************/
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 <=> 數(shù)據(jù)庫中的主鍵
        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");
    }
}

第二步:連接數(shù)據(jù)庫。

 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>();
    // 產(chǎn)生100條模擬數(shù)據(jù)
    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);

有圖有真相。執(zhí)行前:

執(zhí)行后:(并不需要寫一條sql語句,當然也支持寫原生sql語句)

補充:序列化的兩個函數(shù)

// 導出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++ QxORM內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!

相關文章

  • 利用Matlab實現(xiàn)陰影柱狀圖的繪制

    利用Matlab實現(xiàn)陰影柱狀圖的繪制

    陰影柱狀圖繪制的代碼MATHWORKS上也有,不過是生成圖片后,識別圖像上不同顏色塊并直接修改像素生成陰影線。這樣的生成方式不可逆且自由度較低,所以本文為大家?guī)淼氖且粋€直接畫線條填充的硬畫版本,希望有所幫助
    2022-09-09
  • 有關C++頭文件的包含順序研究

    有關C++頭文件的包含順序研究

    下面小編就為大家?guī)硪黄嘘PC++頭文件的包含順序研究。小編覺得挺不錯的,現(xiàn)在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2017-01-01
  • C++三元表達式詳情

    C++三元表達式詳情

    這篇文章主要介紹了C++三元表達式,文章圍繞C++三元表達式的相關資料展開詳細內(nèi)容,需要的朋友可以參考一下,希望多你有所幫助
    2021-11-11
  • C語言 數(shù)據(jù)類型詳細介紹

    C語言 數(shù)據(jù)類型詳細介紹

    本文主要講解C語言 數(shù)據(jù)類型,這里整理了詳細的數(shù)據(jù)類型的資料,希望能幫助剛剛開始學習C語言的同學
    2016-08-08
  • C++操作json文件以及jsoncpp配置詳解

    C++操作json文件以及jsoncpp配置詳解

    這篇文章主要給大家介紹了關于C++操作json文件以及jsoncpp配置的相關資料,文中通過實例代碼及圖片介紹的非常詳細,需要的朋友可以參考下
    2021-06-06
  • C語言去除相鄰重復字符函數(shù)的實現(xiàn)方法

    C語言去除相鄰重復字符函數(shù)的實現(xiàn)方法

    這篇文章主要介紹了C語言去除相鄰重復字符函數(shù)的實現(xiàn)方法的相關資料,實現(xiàn)去重字符串相鄰重復的字符,不相鄰的不用去重的功能,需要的朋友可以參考下
    2017-08-08
  • C++實現(xiàn)完整功能的通訊錄管理系統(tǒng)詳解

    C++實現(xiàn)完整功能的通訊錄管理系統(tǒng)詳解

    來了來了,通訊錄管理系統(tǒng)踏著七彩祥云飛來了,結(jié)合前面的結(jié)構(gòu)體知識和分文件編寫方法,我總結(jié)并碼了一個帶菜單的通訊錄管理系統(tǒng),在這篇文章中將會提到C的清空屏幕函數(shù),嵌套結(jié)構(gòu)體具體實現(xiàn),簡單且充實,跟著我的思路,可以很清晰的解決這個項目
    2022-05-05
  • C語言雙指針算法朋友過情人節(jié)我過算法

    C語言雙指針算法朋友過情人節(jié)我過算法

    這篇文章主要為大家介紹了C語言中雙指針算法的示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助
    2022-02-02
  • C++實現(xiàn)教職工管理系統(tǒng)課程設計

    C++實現(xiàn)教職工管理系統(tǒng)課程設計

    這篇文章主要為大家詳細介紹了C++實現(xiàn)教職工管理系統(tǒng)課程設計,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2022-03-03
  • C語言內(nèi)嵌匯編API內(nèi)存搜索引擎實例

    C語言內(nèi)嵌匯編API內(nèi)存搜索引擎實例

    這篇文章主要介紹了C語言內(nèi)嵌匯編API內(nèi)存搜索引擎實例,涉及匯編語言與內(nèi)存相關操作,需要的朋友可以參考下
    2014-10-10

最新評論