当前位置: 首页 > news >正文

上海产品网站建设网站建设分为哪些

上海产品网站建设,网站建设分为哪些,电脑制作视频的软件有哪些,网站专题策划案例ORM简介#xff1a; ORM 全称是 Object Relational Mapping#xff08;对象关系映射#xff09;#xff0c;是一种程序设计技术#xff0c;用于实现面向对象编程语言里不同类型系统的数据之间的转换。从效果上说#xff0c;它其实是创建了一个可在编程语言里使用的“虚拟… ORM简介 ORM 全称是 Object Relational Mapping对象关系映射是一种程序设计技术用于实现面向对象编程语言里不同类型系统的数据之间的转换。从效果上说它其实是创建了一个可在编程语言里使用的“虚拟对象数据库”。 面向对象是从软件工程基本原则如耦合、聚合、封装的基础上发展起来的而关系数据库则是从数学理论发展而来的两套理论存在显著的区别。为了解决这个不匹配的现象对象关系映射技术应运而生。 简单理解ORM 就是在数据库和对象之间作了一个映射 数据库的表table – 类class 字段field– 对象的属性attribute 关于QxOrm http://www.qxorm.com/qxorm_en/manual.html 这是QxOrm的官方手册如果要使用QxOrm需要重点阅读下。 QxOrm 是一个 C 库旨在为 C 用户提供对象关系映射 ORM 功能。 QxOrm 由 Lionel Marty 开发他自 2003 年以来一直担任软件开发工程师。 基于每个类的简单 C 设置函数如 Java 中的 Hibernate XML 映射文件QxOrm 库提供以下功能 主页http://www.qxorm.com/qxorm_en/home.html 下载http://www.qxorm.com/qxorm_en/download.html 手册http://www.qxorm.com/qxorm_en/manual.html 在线类文档http://www.qxorm.com/doxygen/html/index.html GitHubhttps://github.com/QxOrm/QxOrm 其主要特性包括 持久性支持最常见的数据库如 SQLite、MySQL、PostgreSQL、Oracle、MS SQL Server、MongoDB具有 1-1、1-n、n-1 和 n-n 关系。 序列化JSON、二进制和 XML 格式。 反射或内省动态访问类定义、检索属性和调用类方法。 HTTP Web Server独立的多线程 HTTP 1.1 web 服务器支持 SSL/TLS、持久连接、cookie、会话、分块响应、URL 分发器/路由。 JSON API与 C/Qt 以外的其他技术的互操作性REST web 服务、QML 应用程序、脚本语言。 默认情况下QxOrm 库只依赖 QtCore 和 QtSql 模块。如果启用 QxOrm HTTP web server 特性那么还将依赖于 QtNetwork 模块。除此之外有些特性还需要依赖 boost默认禁用 QxOrm 库是多平台的可以安装在所有环境中Windows、Linux、Mac OS X、Android、iOS、Windows Phone、Raspberry Pi 等… 依赖 Qt的 GUIQtGui可选、网络QtNetwork可选、XMLQtXml可选、数据库QtSql… QxOrm 兼容许多 Qt 对象QObject、QString、QDate、QTime、QDateTime、QList、QHash、QSharedPointer、QScopedPointer… 注意默认情况下QxOrm 库仅依赖于 QtCore 和 QtSql 二进制文件。 可以在 QxOrm.pri或 QxOrm.cmake配置文件中启用额外的功能某些功能可以向 QxOrm 库添加依赖项。 构建和使用 1、下载 http://www.qxorm.com/qxorm_en/download.html 上面的链接下载源码包或者下面的链接下载我编译好的windows版本的64位和32位的dll和lib和头文件。 https://download.csdn.net/download/u012534831/88606094 2、构建 使用cmake-gui.exe 或者 qtcreator 工具或者visual studiio 都可以源码包下提供了 cmakelist.txt文件和pro文件和sln文件直接可以构建无需修改cmake。 如果使用cmake构建构建时这些参数可选默认情况下它们都是禁用的 _QX_ENABLE_BOOST添加一个依赖项来提升头文件*.hpp支持一些类如boostshared_ptr、boostoptional、boostcontainer等…;_QX_ENABLE_BOOST_SERIALIZATION启用boostserialization engine。此选项需要构建boostserialization二进制文件并向QxOrm库添加依赖项;_QX_ENABLE_QT_GUI支持QtGui类型的序列化QBrush、QColor、QFont、QImage、QMatrix、QPicture、QPixmap、QRegion。此选项将依赖项添加到 QxOrm 库 QtGui) ;_QX_ENABLE_QT_NETWORK启用 QxService 模块以通过网络客户端/服务器应用程序传输持久数据层。此选项将依赖项添加到 QxOrm 库 QtNetwork) ;_QX_NO_PRECOMPILED_HEADER 禁用预编译头文件用于减少项目的编译时间最新版本的 MinGW 需要此选项由于已知的编译器错误对于所有其他编译器建议使用预编译头文件 ;_QX_NO_RTTI在没有RTTI C类型信息的情况下构建QxOrm库以及所有依赖于QxOrm的项目 ;_QX_STATIC_BUILD在静态模式下构建 QxOrm 库但建议将 QxOrm 构建为共享库。_QX_UNITY_BUILD使用 Unity 构建概念减少 QxOrm 库编译时间只需编译一个全.cpp源文件。建议使用 CMake 启用此选项因为不支持本机预编译标头;_QX_ENABLE_MONGODB支持MongoDB数据库QxOrm库成为ODM对象文档映射器。 我构建的时候只打开了 _QX_UNITY_BUILD 一个选项也没有用boost。 3、使用 这是构建后的源码目录 构建好后像下面这样将构建的库放到测试程序下。 编写pro文件 QT core gui sqlgreaterThan(QT_MAJOR_VERSION, 4): QT widgetsCONFIG c17HEADERS \oemconfig.h\mainwindow.hSOURCES \main.cpp \oemconfig.cpp\mainwindow.cppFORMS \mainwindow.uiINCLUDEPATH $$PWD/include/ LIBS -L$$PWD/lib LIBS -lQxOrm 我们新建model类进行测试 #ifndef OemConfigModel_H #define OemConfigModel_H#include QString #include QxOrm.hclass OemConfigModel { public:OemConfigModel() : id(0) { }virtual ~OemConfigModel() { }long id;QString name;int age; }; QX_REGISTER_HPP_EXPORT_DLL(OemConfigModel, qx::trait::no_base_class_defined, 0)#endif // OemConfigModel_H此处需要注意的是官方文档和网上的文章都是让使用 QX_REGISTER_HPP 来进行对象注册经过测试发现是不可行的无法通过编译。查看issue发现有人使用 QX_REGISTER_HPP_EXPORT_DLL 进行注册经过验证后是可以的。下面的cpp文件同理需要使用 QX_REGISTER_CPP_EXPORT_DLL 而不是 QX_REGISTER_CPP。 #include oemconfig.hQX_REGISTER_CPP_EXPORT_DLL(OemConfigModel)namespace qx { template void register_class(QxClassOemConfigModel t) {t.setName(t_OemConfigModel);// 注册 User::id 数据库中的主键t.id(OemConfigModel::id, id);// 注册 User::name 属性使用的 key 是 nameversion 是 1。t.data(OemConfigModel::name, name);// 注册 User::age 属性使用的 key 是 age。t.data(OemConfigModel::age, age); } }#include mainwindow.h #include QApplication #include oemconfig.hint main(int argc, char* argv[]) {QApplication a(argc, argv);MainWindow w;w.show();QFile::remove(./Users.db);// 初始化参数用于和数据库交互qx::QxSqlDatabase::getSingleton()-setDriverName(QSQLITE);qx::QxSqlDatabase::getSingleton()-setDatabaseName(./Users.db);qx::QxSqlDatabase::getSingleton()-setHostName(localhost);qx::QxSqlDatabase::getSingleton()-setUserName(root);qx::QxSqlDatabase::getSingleton()-setPassword();// 在数据库中创建 User 表QSqlError daoError;daoError qx::dao::create_tableOemConfigModel(); // qDebug() daoError.text();// 创建 3 个用户// 可以使用 std 和 Qt 智能指针std::shared_ptr、QSharedPointer 等...typedef QSharedPointerOemConfigModel UserPtr;UserPtr u1;u1.reset(new OemConfigModel());u1-id 1;u1-name Jack Ma;u1-age 30;UserPtr u2;u2.reset(new OemConfigModel());u2-id 2;u2-name Pony;u2-age 25;UserPtr u3;u3.reset(new OemConfigModel());u3-id 3;u3-name Waleon;u3-age 18;// 将所有用户插入容器中// 可以使用 std、boost、Qt 和 qx::QxCollectionKeyValue 中的许多容器typedef QVectorUserPtr VectorUser;VectorUser users;users.push_back(u1);users.push_back(u2);users.push_back(u3);// 将容器中的所有用户插入到数据库中// p1、p2、p3 的 id 属性会自动更新daoError qx::dao::insert(users);qDebug() daoError.text();// 修改第二个用户的信息并更新到数据库中u2-age 38;daoError qx::dao::update(u2);// 从数据库中删除第一个用户u1.reset(new OemConfigModel());u1-name Jack Ma;daoError qx::dao::delete_by_id(u1);// 计算用户的数量long userCount qx::dao::countOemConfigModel();qDebug() User Count: userCount;// 将 id 为 3 的用户取出并传给一个新变量UserPtr userTmp;userTmp.reset(new OemConfigModel());userTmp-name qht;daoError qx::dao::fetch_by_id(userTmp);qDebug() User Tmp: userTmp-id userTmp-name userTmp-age;return a.exec(); }运行程序会打印一系列sql执行的输出信息QxOrm 不会隐藏 SQL 查询默认情况下所有的语句都会显示所以在控制台中可以看到执行过程如果想要关闭可以使用官方建议的下面的方法但是我测试了没有用因此我用QT的自定义日志拦截器对 包含 QxOrm的日志进行了过滤。 qx::QxSqlDatabase::getSingleton()-setFormatSqlQueryBeforeLogging(false);qx::QxSqlDatabase::getSingleton()-setVerifyOffsetRelation(false);qx::QxSqlDatabase::getSingleton()-setTraceSqlQuery(false);qx::QxSqlDatabase::getSingleton()-setTraceSqlBoundValuesOnError(false);qx::QxSqlDatabase::getSingleton()-setTraceSqlRecord(false);qx::QxSqlDatabase::getSingleton()-setTraceSqlBoundValues(false);qx::QxSqlDatabase::getSingleton()-setTraceSqlBoundValuesOnError(false);You can install your own message handler (using qInstallMessageHandler), and filter all messages which start with [QxOrm] : https://doc.qt.io/qt-5/qtglobal.html#qInstallMessageHandler 好了今天这篇文章介绍了QxOrm的使用后面还会介绍比如 非ID主键、复合主键等其他使用方法。
http://www.zqtcl.cn/news/112766/

相关文章:

  • 史志网站建设在线网站建设工程标准
  • 青海省建设工程在哪个网站发布北京专业网站外包公司
  • 东营网站建设公司wordpress获取子分类
  • 网站的尾页要怎么做d代码做网站
  • 自己做一元购网站烟台网站设计公司推荐
  • 有没有做彩票直播的网站成都十八个网红打卡地
  • 急求聊城网站建设网站服务器管理系统
  • 做网站需要什么许可证商场设计效果图
  • html网页制作视频windows优化大师有哪些功能
  • 国外建站主机帝国手机网站cms系统
  • 响应式网站建设哪家好网站空间支付方式
  • 腾讯广告建站工具贵州企业网站建设价格
  • 最新的网站建设架构wordpress管理员头像
  • 手机网站模版化工网站建设公司
  • 网站建设 会计分录北京网站建设主页
  • 北京市建设监理协会网站网站一般多少钱
  • 做网站零成本网站如何做成app
  • 建小网站多少钱深圳网站备案注销
  • 海淘网站是谁做的为该网站做自适应
  • php网站开发自学如何做x响应式网站
  • 吴忠网站建设公司随州网站建设优化推广渠道
  • dedecms 招聘网站网站建设市场调研报告
  • 建小网站多少钱做会计网站的流程
  • 为一个村做网站优秀文创产品设计案例及分析
  • 山东专业网站建设公司哪家好网站开发的薪资是多少
  • 无极在线网站播放烟台注册公司
  • 网站源文件修改科技网站欣赏
  • 关于h5的网站目录 首页 wordpress
  • 包头网站建设推广手机网站开发介绍
  • 网站推广设计用那种语言做网站比较好