这是我参与「第三届青训营 -后端场」笔记创作活动的的第五篇笔记。
本章目录:
首先配置GO的环境,把GoPath配置好:https://blog.csdn.net/qq_40027172/article/details/118828110
可以查看官网中给出的包的示例,我们先了解一下DSN(Data Source Name)是什么:
其实就是连接的一行。。里面有着ip地址和参数之类的数据,在很多地方可以用“连接字符串”替代。
这段代码就是获取数据库中users的值
和大多数的数据库连接类似,给出连接ip和密码以及连接参数,有执行语句,但是一定要记得defer关闭,虽说rows.Next()也可以关闭,但是保不准会出现错误直接return了。
连接池是为了分担连接压力,更好的复用连接。
DSN会需要字符串,但是有些字符串可能无法转义。
需要一直import Driver。
所以后来做成了结构体。
这样就不会忘记import,因为有强制的编译的检查。
和之前的长代码一样的内容,但是简洁了很多。
CRUD
例如User表应当被命名为users。
关联的CRUD
Preload/Joins 预加载
级联删除
SQL本来的样子:
GORM的实现:
Chain Method如何实现的:
Finisher实现:
为什么这样子设计:
自定义Builder:
扩展字句:
选择字句:
注册的新的Callback会在上面的所有之后执行。
为什么要这样设计:
多租户:
搞一个过滤器。
多数据库、读写分离:
是什么:
预编译:
一行代码提升效率:关闭预编译?
字节封装的bytegorm,一套sql规范。
借助Dialector实现,Dialector是什么:
橙色的就是Dialector
Raw SQL - Raw SQL:
Raw代码多了不好管理好像
Raw SQL - Gen: