c++ qt orm 基于Qt的ORM框架QyOrm,打破传统,只需头文件定义、无需cpp定义,语法类似peewee,使用超简单

QyOrm Gitee传送门

从零全新重构
支持基本的增删改查功能、Model定义简单易懂,只需要在头文件定义
JSON格式的保存和读取,可查询更新数据、上一个下一个,最大最小
弹性表,Model/View双向绑定,自动表单

手动 类的定义:

#ifndef MODEL_H
#define MODEL_H

#include "QyOrmDynamicTable.h"

class User : public QyOrmTable
{
    Q_OBJECT
public:
    QYORM_TABLE(User);

    QYORM_FIELD(QyOrmStringField, uid, QyOrmFieldConstraint::PrimaryKey);
    QYORM_FIELD(QyOrmStringField, pwd, QyOrmFieldConstraint::NotNull, "密码");
    QYORM_FIELD(QyOrmStringField, name, "姓名");
    QYORM_FIELD(QyOrmStringField, test);
};

#endif
#include <QCoreApplication>
#include <QSqlDatabase>
#include <QSqlQuery>
#include <QDebug>
#include "TestModel.h"
#include <QyOrmDatabase.h>

int main(int argc, char *argv[])
{
    QCoreApplication a(argc, argv);

    QSqlDatabase db = QSqlDatabase::addDatabase("QSQLITE");
    db.setDatabaseName("test.db");
    db.open();
    db.exec("PRAGMA foreign_keys=ON");
    QyOrmDatabase::setDatabase(db);

    //创建表
    qInfo() << User().sqlCreateTableString();
    User().sqlCreateTable();

    //增
    User user;
    user.uid = "001";
    user.pwd = "001";
    user.name = "张三";
    qInfo() << user.sqlInsertString();
    user.sqlInsert();

    //改
    user.name = "张三三";
    qInfo() << user.sqlUpdateChangedString();
    user.sqlUpdateChanged();

    //删
    qInfo() << user.sqlDeleteString();
    user.sqlDelete();

    //增加测试用例
    user.sqlInsert();
    user.uid = "002";
    user.pwd = "002";
    user.name = "李四";
    user.sqlInsert();
    user.uid = "003";
    user.pwd = "003";
    user.name = "王五";
    user.sqlInsert();
    user.uid = "004";
    user.pwd = "004";
    user.name = "贼六";
    user.sqlInsert();

    //查
    User temp;
    auto users = temp.sqlSelectAllAuto();
    qInfo() << "一共有" << users.size() << "个人";
    foreach(User* user, users){
        qInfo() << "uid:" << user->uid.get();
        qInfo() << "pwd:" << user->pwd.get();
        qInfo() << "name:" << user->name.get() << "\n";
    }
    qDeleteAll(users);

    //查单个人
    temp.name = "%五";
    temp.name.setExecuteOperatorLike();
    User* wangwu = temp.sqlSelectOneAuto();
    qInfo() << "uid:" << wangwu->uid.get();
    qInfo() << "pwd:" << wangwu->pwd.get();
    qInfo() << "name:" << wangwu->name.get() << "\n";
    delete wangwu;

    return 0;
}
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

向娇葵

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值