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
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。 如若内容造成侵权/违法违规/事实不符,请联系我的编程经验分享网邮箱:veading@qq.com进行投诉反馈,一经查实,立即删除!
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。 如若内容造成侵权/违法违规/事实不符,请联系我的编程经验分享网邮箱:veading@qq.com进行投诉反馈,一经查实,立即删除!