从零全新重构
支持基本的增删改查功能、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;
}