# xorm2 **Repository Path**: unsafe-rust/xorm2 ## Basic Information - **Project Name**: xorm2 - **Description**: 阅读xorm的源码,并加上了中文注释。 - **Primary Language**: Go - **License**: Apache-2.0 - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2021-03-08 - **Last Updated**: 2021-03-20 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # xorm #### 介绍 * 对 xorm 源码的学习,这只是本人阅读 `xorm`源码的笔记,生产中请直接使用[xorm增强版](https://github.com/xormplus/xorm) * [xorm文档地址1](https://www.kancloud.cn/xormplus/xorm/167078) * [xorm文档地址2](http://xorm.topgoer.com/chapter-06/) * ⚠️运行 `example`下的测试文件不通过,`builder` `dialcet` `core` `statement` 等包都没问题,问题出在 `session` `engine`模块。 #### 软件架构 * `builder` 包下的 `builder`模块拼接 `SQL` 语句,它主要是将符合 `SQL` 规范的语句,封装成一个个的 `API`,其本身并不能直接操作数据库。 * `dialect` 包下的 `IDialect` 接口,主要处理各类 `SQL`数据库的特性,即: 方言(不属于SQL规范的各类数据库的特性),其本身并不能直接操作数据库。 * `schema` 包下的 `schema`主要处理的是 `Model`与数据库 `Table` 之间的关系,利用反射将模型映射成数据库表结构。 * `core` 包主要是将 `sql.DB`扩展成`core.DB`,`sql.stmt`扩展成`core.stmt`...就是扩展了 `database/sql`包下的内容。其本身具备了操作数据库的能力。 * `statement`包下的 `statement`模块,就是将 `builder`,`dialect`,`core`,`schema` 装配起来,生成一个个完整的`SQL`语句,具备了操作本框架支持的SQL数据库的能力。 * `Session` 只是对 `Statement`模块的包装和扩展。`Session`在`Statement`的基础上增加了一些自定义的逻辑和功能。 * `Engine` 则又在 `Session`的基础上进一步的封装。扩展了 `Session`的功能。 * 每一个 `Engine` 对象只能持有一个处于连接状态的 `*core.DB`对象。(它只能保持一个数据库连接) * 每一个 `Engine` 对象能打开任意多个 `*Session` 对象。(它能维护任意多个会话) #### 安装教程 1. xxxx 2. xxxx 3. xxxx #### 使用说明 1. xxxx 2. xxxx 3. xxxx #### 参与贡献 1. Fork 本仓库 2. 新建 Feat_xxx 分支 3. 提交代码 4. 新建 Pull Request #### 特技 1. 使用 Readme\_XXX.md 来支持不同的语言,例如 Readme\_en.md, Readme\_zh.md 2. Gitee 官方博客 [blog.gitee.com](https://blog.gitee.com) 3. 你可以 [https://gitee.com/explore](https://gitee.com/explore) 这个地址来了解 Gitee 上的优秀开源项目 4. [GVP](https://gitee.com/gvp) 全称是 Gitee 最有价值开源项目,是综合评定出的优秀开源项目 5. Gitee 官方提供的使用手册 [https://gitee.com/help](https://gitee.com/help) 6. Gitee 封面人物是一档用来展示 Gitee 会员风采的栏目 [https://gitee.com/gitee-stars/](https://gitee.com/gitee-stars/)