QxOrm 如何自定义主键?

2023-12-14 09:06:45

在这里插入图片描述

默认情况下QxOrm的主键是long类型自增的,但是有时候我们不想使用这个主键,想使用比如string类型的主键。

可以使用QX_REGISTER_PRIMARY_KEY宏定义另一种类型(例如,QString 类型)的唯一 id(主键)。
此宏专用于 qx::trait::get_primary_key 模板,用于将主键类型关联到 C++ 类。

例如,要为 myClass C++ 类定义 QString 主键(映射到具有 VARCHAR 类型的列主键的数据库表),必须编写: QX_REGISTER_PRIMARY_KEY(myClass, QString)

警告:QX_REGISTER_PRIMARY_KEY宏必须在类定义中的QX_REGISTER_HPP宏之前使用,否则会发生编译错误。

示例:

#ifndef OemConfigModel_H
#define OemConfigModel_H

#include <QString>
#include <QxOrm.h>

class  OemConfigModel
{
public:
    OemConfigModel() : id(0) { }
    virtual ~OemConfigModel() { }

    QString name;
    long id;
    int age;
};
QX_REGISTER_PRIMARY_KEY(OemConfigModel, QString)
QX_REGISTER_HPP_EXPORT_DLL(OemConfigModel, qx::trait::no_base_class_defined, 0)

#endif // OemConfigModel_H

#include "oemconfig.h"

QX_REGISTER_CPP_EXPORT_DLL(OemConfigModel)

namespace qx
{
template <> void register_class(QxClass<OemConfigModel>& t)
{
    t.setName("t_OemConfigModel");

    // 注册 User::name <=> 数据库中的主键
    t.id(&OemConfigModel::name, "name");

    // 注册 User::id 属性
    t.data(&OemConfigModel::id, "id");

    // 注册 User::age 属性,使用的 key 是 age。
    t.data(&OemConfigModel::age, "age");
}
}

文章来源:https://blog.csdn.net/u012534831/article/details/134850881
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。