mysql数据库orm客户端(C++版本的mybatis)

559 阅读2分钟

最近公司业务中,涉及到C++与java通过MySQL数据库解耦的场景越来越多,那无疑对于mysql的c/c++客户端依赖还比较大,以下是我们在用的基于MySQLcapi简易封装的客户端sdk。

编辑切换为居中

添加图片注释,不超过 140 字(可选)

从上面得编码,可以看出,各种列index,开发和维护成本,都比较高。

这使得很多C++研发同学,有些 “畏惧” 操作数据库,更加倾向于采用“配置文件”的方式来替代;那么,C++能否有类似于Java中的Mybatis,MybatisPlus,亦或者 Python中的SQLAlchemy这样的易用的数据库访问框架呢?

编辑切换为居中

添加图片注释,不超过 140 字(可选)

答案是,“很遗憾,没有!!!” 😭

okay ~~~~

如果我们自己来动手实现一下,需要几步呢??🤔

第一步:整理思路

我们究竟需要一个什么样的库?

假设场景:

数据库表:user表

编辑

添加图片注释,不超过 140 字(可选)

代码对象定义:

编辑

添加图片注释,不超过 140 字(可选)

期望的使用方式

定义一个类型Class/Struct: User,

通过拼接SQL语句,查询user表,并返回结果集:User类型的数组;

//ClassUser对应的,其实是 user这张表的元信息;

// User 实例化的对象,对应的是什么?user表的一条行记录;

ORM 思想,即 Object Relationship Mapping;

第二步:拆解“目标”,按需实现

编辑

添加图片注释,不超过 140 字(可选)

编辑切换为居中

添加图片注释,不超过 140 字(可选)

第三步:连接数据库,执行sql操作,有哪些sdk可以选?

编辑切换为居中

添加图片注释,不超过 140 字(可选)

第四步:如何管理数据库连接?

连接池~~~

编辑切换为居中

添加图片注释,不超过 140 字(可选)

第五步:如何做到通用性?

编辑切换为居中

添加图片注释,不超过 140 字(可选)

第六步:上流程图

编辑切换为居中

添加图片注释,不超过 140 字(可选)

1. 创建prepare_statement对象
2. 参数绑定
3. 预执行(获取结果集元信息)
4. 结果集合绑定
5. 执行SQL,获取结果集;
6. 结果集中的field如何映射成对象??

第七步:Talk is cheap, show me the code !

github开源地址: github.com/garinyang/c…

期待厉害的大佬一起完善~~~

待完成部分:

1. 配置化管理
2. 事务的支持
3. 长连接管理,超时重试
4. ...

可建设部分:

1. 支持分库分表,数据库备份,迁移等;

编辑

欢迎关注:一起交流