当前位置: 首页 > 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.pierceye.com/news/984819/

相关文章:

  • 做it人经常逛的网站国通快速建站
  • 网站标题会影响吗wordpress改域名修改哪里
  • 做音乐网站需要版权么工业设计图片产品
  • 外包网站问些什么问题浙江省信息港成绩查询
  • 手机网站怎么dw做官方网站下载打印机的驱动
  • 网站被攻击空间关了怎么办网站用的是什么语言
  • 欧亚专线快递查询商丘seo
  • 网站建设跟加入会员哪个效果好网站建设优化开发公司哪家好
  • 网站建设执行力wordpress php解密算法
  • 青岛网站设计皆挺青岛造价人员做兼职的网站
  • 潍坊cms建站系统wordpress 朴素
  • 网站建设方面的课程国外 图片网站
  • 网络哪里能接活做网站新浦网站制作网站建设
  • 新手自己做网站凡科网建设网站如何修改源代码
  • 做自媒体发视频用哪些网站贵州网站建设联系电话
  • 可以提供排版的网站友情链接怎么弄
  • 优秀网站建设空间海口 网站建设
  • 设计网站页面出现问题九江哪家网站建设公司好
  • 深圳做企业网站的公司成都公司展厅
  • 两学一做 网站t型布局网站怎么做
  • 论坛网站建设联系方式成都网站设计制作价格
  • 网页网站建设的ppt模板下载响应式网站项目
  • 做网站在哪里可以找到高清壁纸北京响应式网站
  • 企业网站建设门户网站建设费的摊销年限
  • 模板网站的域名是什么网站源代码程序
  • 网站空间多久续一次费长春网站制作设计
  • 网站制作价格低广西网络电视
  • 平台网站建设收费烟台网站的优化
  • 如何做提卡网站vue.js wordpress
  • 国家网站备案查询系统wordpress 主题 简洁