最近公司业务中,涉及到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. 支持分库分表,数据库备份,迁移等;
编辑
欢迎关注:一起交流