前面一篇文章学习了如何通过go的第三方框架,操纵数据库,但是这种操纵方式存在弊端,为了给程序员提供更高效的开发环境,这里引入ORM,用于操纵数据库
一.ORM-概念
1.原始第三方库操纵mysql的弊端
弊端:
因为利用go语言直接操作数据库需要编写SQL语句, 而SQL语句都是字符串, 所以没有提示, 所以容易出错
By 极客江南
2.原来程序员编写数据库操作代码
过去: 在企业开发中一般情况下都是在图形化界面工具中先写好SQL语句, 测试没有问题之后再拷贝到代码当中
现在: 在企业开发中一般情况下可以使用ORM, 如果使用ORM来操作数据库, 就可以摆脱SQL语句
我们在自己的电脑上安装Navicat for mysql软件,右键需要操纵的数据库,选择打开命令行列表,选择右边导航栏的查询选项,编写mysql语句(注意实际开发中多有关键字要大写)
INSERT INTO beegotest VALUES (null,'name')
SELECT * FROM beegotest WHERE id=1;
然后点击图形界面的运行,这里如果sql语句错误,会报错
然后在图像化界面编译通过后,再拷贝到项目文件中
3.ORM是什么
ORM.png
ORM是 对象关系映射 Object Relational Mapping
ORM可以将编程开发中的对象和数据库中的表进行映射, 可以根据对象创建表, 可以根据对象对表进行CRUD
现在市面上所有的编程语言几乎都支持ORM, 只不过是使用的框架不同而已
By 极客江南
image.png
简单的来讲,ORM就是用类代替指定数据库中的表
二.ORM-创建表
1.注册DB驱动类型
简单的来说,就是告诉系统,我要操作的数据库是什么数据库
image.png
image.png
2.获取ORM连接对象
image.png
image.png
3.注册ORM模型
image.png
image.png
4.根据注册的模型创建表
简单说就是根据orm连接模型创建表
image.png
第二个参数是说要不要强制创建该表,就是如果该表已经存在,删除之后重建,一般不建议强制删除,这是严重的错误
image.png
如果模型中的变量是小写,不会编译程数据库中的表中的字段
func init() {
// 1.注册数据库驱动类型
orm.RegisterDriver("mysql", orm.DRMySQL)
// 2.获取ORM连接对象
// 参数1 数据库的别名,用来在 ORM 中切换数据库使用
// 参数2 driverName
// 参数3 对应的链接字符串
orm.RegisterDataBase("default", "mysql", "root:root@tcp(127.0.0.1:3306)/itzb?charset=utf8")
// 3.注册ORM模型
// 注意点: 注册完模型并不会创建表
orm.RegisterModel(new(User))
// 4.根据注册的模型创建表
// 第一个参数: 数据库的别名(在哪个数据库中创建)
// 第二个参数: 是否强制更新(销毁过去的再重新创建)
// 第三个参数: 是否显示创建SQL语句
orm.RunSyncdb("default", false, true)
}
func test() {
// 1.打开数据库
db, err := sql.Open("mysql", "root:root@tcp(127.0.0.1:3306)/itzb?charset=utf8")
if err != nil {
By 极客江南