# QxOrm 库 - 官方仓库
[QxOrm 库](https://www.qxorm.com/) 是一个为 C++ Qt 开发者提供的**对象关系映射 (ORM)** 和**对象文档映射 (ODM)** 数据库库。主要功能包括：
- [持久化](https://www.qxorm.com/qxorm_en/manual.html#manual_30)：支持最常见的数据库，如 SQLite、MySQL、PostgreSQL、Oracle、MS SQL Server、[MongoDB](https://www.qxorm.com/qxorm_en/manual.html#manual_95)（支持 1-1、1-n、n-1 和 n-n 关系）；
- [序列化](https://www.qxorm.com/qxorm_en/manual.html#manual_60)：JSON、二进制和 XML 格式；
- [反射](https://www.qxorm.com/qxorm_en/manual.html#manual_70)（或[内省](https://www.qxorm.com/qxorm_en/manual.html#manual_70)）：动态访问类定义，检索属性并调用类方法；
- [HTTP Web 服务器](https://www.qxorm.com/qxorm_en/manual.html#manual_96)：独立的多线程 HTTP 1.1 Web 服务器（支持 SSL/TLS、持久连接、Cookie、会话、分块响应、URL 调度/路由）；
- [JSON API](https://www.qxorm.com/qxorm_en/manual.html#manual_97)：与 C++/Qt 以外的其他技术（REST Web 服务、QML 应用程序、脚本语言）的互操作性。

## 文档
QxOrm 网站提供了[用户手册](https://www.qxorm.com/qxorm_en/manual.html)。

本文档的目标是提供一个用户指南，学习如何使用 QxOrm 库的功能。本手册面向正在寻找解决方案来管理 C++/Qt 中持久数据层的开发人员和软件架构师。理解本文档需要 C++ 和数据库方面的技术技能。

**注意：** 本手册/用户指南中描述的所有功能都可以通过 **QxEntityEditor 应用程序**（QxOrm 库的图形编辑器、数据模型设计器和源代码生成器）快速轻松地定义。QxOrm 网站上提供了[专门针对 QxEntityEditor 应用程序的文档](https://www.qxorm.com/qxorm_en/manual_qxee.html)。

## QxEntityEditor 应用程序
[QxEntityEditor](https://www.qxorm.com/qxorm_en/manual_qxee.html) 是 QxOrm 库的图形编辑器：**QxEntityEditor 提供了一种图形化方式来管理数据模型**。
QxEntityEditor 是多平台的（适用于 Windows、Linux 和 Mac OS X），并为所有环境生成原生代码：桌面（Windows、Linux、Mac OS X）、嵌入式和移动设备（Android、iOS、Windows Phone、Raspberry Pi 等）。
QxOrm 网站上提供了[QxEntityEditor 应用程序的用户手册（文档）](https://www.qxorm.com/qxorm_en/manual_qxee.html)。

QxEntityEditor 基于插件，提供了多种导入/导出数据模型的方法：
- [自动生成 C++ 持久类](https://www.qxorm.com/qxorm_en/manual_qxee.html#cpp_export_settings)（在 QxOrm 上下文中注册）；
- [自动生成 DDL SQL 脚本](https://www.qxorm.com/qxorm_en/manual_qxee.html#ddl_export_settings)（数据库架构），适用于 SQLite、MySQL、PostgreSQL、Oracle 和 MS SQL Server；
- 管理每个项目版本的架构演变（ALTER TABLE、ADD COLUMN、DROP INDEX 等）；
- 通过网络传输数据模型并[快速创建客户端/服务器应用程序](https://www.qxorm.com/qxorm_en/manual_qxee.html#cpp_services_export_settings)，使用 [QxService 模块](https://www.qxorm.com/doxygen/html/group___qx_service.html)；
- [导入现有数据库结构](https://www.qxorm.com/qxorm_en/manual_qxee.html#wnd_mysql_import)（使用 ODBC 连接或原生驱动程序），适用于 SQLite、MySQL、PostgreSQL、Oracle 和 MS SQL Server 数据库；
- 因为每个项目都不同，QxEntityEditor 提供了多种方法来自定义生成的文件（尤其是 [JavaScript 引擎和集成调试器](https://www.qxorm.com/qxorm_en/manual_qxee.html#js_engine)）。

![QxEntityEditor 应用程序](https://www.qxorm.com/qxentityeditor/resource/qxee_sample_small.png)

## 依赖项
默认情况下，QxOrm 库仅依赖于 [Qt 框架](https://www.qt.io/) 中的 [QtCore](https://doc.qt.io/qt-5/qtcore-index.html) 和 [QtSql](https://doc.qt.io/qt-5/qtsql-index.html) 库。
如果启用 [QxOrm HTTP Web 服务器](https://www.qxorm.com/qxorm_en/manual.html#manual_96) 功能，那么 QxOrm 库还将依赖于 [QtNetwork](https://doc.qt.io/qt-5/qtnetwork-index.html) 库。
某些功能需要 [boost](https://www.boost.org/) 依赖项（默认禁用）。

## 作者
QxOrm 由 XDL 团队开发，该团队自 2003 年以来一直是软件开发工程师。

## 许可证
QxOrm 是一个 C++ 库，可在双重许可证下使用：
- [GNU/GPLv3 许可证](https://www.qxorm.com/qxorm_en/resource/license.gpl3.txt)：开源且免费（用于开发开源项目或评估 QxOrm 库）；
- [专有许可证](https://www.qxorm.com/qxorm_en/download_details.php)，用于分发基于 QxOrm 库的应用程序，不受 GNU/GPLv3 许可证的任何限制。

## Conan 打包方法
### 安装 Conan
首先，确保您已安装 Conan 包管理器。如果尚未安装，可以从 [Conan 官方网站](https://conan.io/downloads.html) 下载并安装。

### 构建和安装包
1. 克隆仓库并进入项目目录：
   ```bash
   git clone <仓库地址>
   cd XdlOrm
   ```

2. 构建并安装包到本地 Conan 缓存：
   ```bash
   conan create . --profile:build default --profile:host default
   ```

3. 或者，直接在项目目录中构建：
   ```bash
   conan build . --profile:build default --profile:host default
   ```

### 在项目中使用
在您的项目的 `conanfile.py` 中添加依赖：
```python
requires = [
    "xdlorm/1.0.0"
]
```

或者，使用 `conan install` 命令安装：
```bash
conan install . --build=missing
```

### 配置选项
QxOrm 库提供了以下 Conan 选项：
- `shared`：是否构建为共享库（默认：False）
- `enable_boost`：是否启用 Boost 支持（默认：False）
- `enable_boost_serialization`：是否启用 Boost 序列化（默认：False）
- `enable_qt_gui`：是否启用 Qt GUI 支持（默认：False）
- `enable_qt_network`：是否启用 Qt Network 支持（默认：False）
- `enable_mongodb`：是否启用 MongoDB 支持（默认：False）
- `no_json`：是否禁用 JSON 序列化（默认：False）
- `unity_build`：是否启用 Unity 构建（默认：False）

例如，构建共享库并启用 Boost 支持：
```bash
conan create . --profile:build default --profile:host default -o xdlorm:shared=True -o xdlorm:enable_boost=True
```