ormpp使用文档

目录

ormpp的目标

ormpp最重要的目标就是让c++中的数据库编程变得简单,为用户提供统一的接口,支持多种数据库,降低用户使用数据库的难度。

ormpp的特点

ormpp是modern c++(c++11/14/17)开发的ORM库,目前支持了三种数据库:mysql, postgresql和sqlite,ormpp主要有以下几个特点:

  1. header only
  2. cross platform
  3. unified interface
  4. easy to use
  5. easy to change database

你通过ormpp可以很容易地实现数据库的各种操作了,大部情况下甚至都不需要写sql语句。ormpp是基于编译期反射的,会帮你实现自动化的实体映射,你再也不用写对象到数据表相互赋值的繁琐易出错的代码了,更酷的是你可以很方便地切换数据库,如果需要从mysql切换到postgresql或sqlite只需要修改一下数据库类型就可以了,无需修改其他代码。

快速示例

这个例子展示如何使用ormpp实现数据库的增删改查之类的操作,无需写sql语句。

如何编译

编译器支持

需要支持C++17的编译器, 要求的编译器版本:linux gcc7.2, clang4.0; windows >vs2017 update5

数据库的安装

因为ormpp支持mysql, postgresql和sqlite,所以需要安装mysql,postgresql,postgresql官方提供的libpq以及sqlite3,安装之后,在CMakeLists.txt配置目录和库路径。

上面两步完成之后就可以直接编译了。

接口介绍

ormpp屏蔽了不同数据库操作接口的差异,提供了统一简单的数据库操作接口,具体提供了数据库连接、断开连接、创建数据表、插入数据、更新数据、删除数据、查询数据和事务相关的接口。

接口概览

具体的接口使用介绍

先在entity.hpp中定义业务实体(和数据库的表对应),接着定义数据库对象:

  1. 连接数据库

返回值:bool,成功返回true,失败返回false.

  1. 断开数据库连接

注意:用户可以不用显式调用,在数据库对象析构时会自动调用disconnect接口。

返回值:bool,成功返回true,失败返回false.

3.创建数据表

create_datatable example:

注意:目前只支持了key和not null属性,并且只支持单键,还不支持组合键,将在下一个版本中支持组合键。

返回值:bool,成功返回true,失败返回false.

4.插入单条数据

返回值:int,成功返回插入数据的条数1,失败返回INT_MIN.

5.插入多条数据

返回值:int,成功返回插入数据的条数N,失败返回INT_MIN.

  1. 更新单条数据

注意:更新会根据表的key字段去更新,如果表没有key字段的时候,需要指定一个更新依据字段名,比如

[/crayon]

返回值:int,成功返回更新数据的条数1,失败返回INT_MIN.

5.插入多条数据

注意:更新会根据表的key字段去更新,如果表没有key字段的时候,需要指定一个更新依据字段名,用法同上。

返回值:int,成功返回更新数据的条数N,失败返回INT_MIN.

  1. 删除数据

返回值:bool,成功返回true,失败返回false.

7.单表查询

返回值:std::vector,成功vector不为空,失败则为空.

8.多表或特定列查询

返回值:std::vector<std::tuple>,成功vector不为空,失败则为空.

9.执行原生sql语句

注意:execute接口支持的原生sql语句是不带占位符的,是一条完整的sql语句。

返回值:int,成功返回更新数据的条数1,失败返回INT_MIN.

10.事务接口

开始事务,提交事务,回滚

返回值:bool,成功返回true,失败返回false.

11.面向切面编程AOP

定义切面:
struct log{
//args…是业务逻辑函数的入参
template<typename… Args>
bool before(Args… args){
std::cout<<“log before”<<std::endl;
return true;
}

[/crayon]

注意:切面的定义中,允许你只定义before或after,或者二者都定义。

roadmap

  1. 支持组合键。
  2. 多表查询时增加一些诸如where, group, oder by, join, limit等常用的谓词,避免直接写sql语句。
  3. 增加日志
  4. 增加获取错误消息的接口
  5. 支持更多的数据库

联系方式

purecpp@163.com

http://purecpp.org/

https://github.com/qicosmos/ormpp

发表评论

Copy Protected by Chetan's WP-Copyprotect.