mysql预处理的优点在于
1.安全性高.预处理变量用占位符?表示,与sql语句是分别传递给服务器,安全性相对比较高.
2.占用流量低.在sql语句已经发送的情况下,只要发送绑定变量的不同值即可.
然而mysql预处理也有一个很大的缺点,就是大量变量绑定的代码,可读性极差,冗余重复代码很多.
我们思考预处理如何做到扬长避短,将冗余代码不放在mysql预处理封装的代码中,而是放在结构体初始化的文件中.这样在结构体初始化的繁琐要好过预处理时的繁琐.
然而结构体的成员变量如何与预处理的bind关联呢?
答案无非是数组.输入数组关联预处理的绑定参数,输出数组关联预处理的绑定结果.
数组的数据来源是结构体,结构体如何将成员变量交接给数组呢?
于是我们冥思苦想发现这个预处理的封装是系统性的工程.需要借助第三方的一些代码完成任务.比如想要把结构体成员对象存取,最好的办法不外乎是hashmap,对输出结果的返回最通用的结构体不外乎是json.因此需要引入hashmap和json.
这样还需要设计一个场景,存取结构体成员,于是我们想到了数据表的crud通用操作.接下来就是设计各个crud的函数用hashmap存取结构体变量.大致流程如此.
代码参考gtee开源仓库https://gitee.com/solider12/lazy-cats-code-warehouse/tree/master