默认情况下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");
}
}