go语言微服务项目,高级篇--06gorm操作mysql-创建项目用表

本文介绍了Go语言中使用gORM ORM框架操作MySQL数据库的方法,包括连接数据库、创建表、插入、查询、更新和删除数据。同时讨论了gORM的自动映射、初始化连接池、MySQL时区问题以及如何在项目中创建表。
摘要由CSDN通过智能技术生成

ORM 框架

ORM 框架介绍

  • ORM:Object Relational Mapping —— 对象关系映射。

在这里插入图片描述

  • 作用:

    • 通过操作结构体对象,来达到操作数据库表的目的。
    • 通过结构体对象,来生成数据库表。
  • 优点:

    • SQL有可能 比较复杂。(Oracle — 子查询 – 嵌套)ORM 操作数据库,不需要使用 SQL
    • 不同开发者,书写的 SQL 语句执行效率不同。
  • go语言支持的 ORM:

    • gORM:http://gorm.book.jasperxu.com/
    • xORM:

gorm 连接数据库、建表

  • grom 操作的都是表、表数据。—— 不能操作数据库!使用SQL配合完成。

    create database 库名 charset=utf8;
    

回顾MySQL

  1. 确认mysql服务,启动:ps xua | grep mysql
  2. 连接MySQL数据库: mysql -uroot -p123456
  3. 查看数据库:show databases;
  4. 删除数据库:drop database t1; t1 代表库名。
  5. 选择数据库、查看表:use 数据库名; show tables;
  6. 创建数据库: create database test charset=utf8;

gORM 操作 MySQL 数据库

创建表

  1. 连接数据库

    import (
    	"github.com/jinzhu/gorm"
    	_ "github.com/go-sql-driver/mysql"   //"_" 代码不直接使用包, 底层链接要使用!
    	"fmt"
    )
    // mysql: 数据库的驱动名
    // 链接数据库 --格式: 用户名:密码@协议(IP:port)/数据库名?xxx&yyy&
    conn, err := gorm.Open("mysql", "root:123456@tcp(127.0.0.1:3306)/test")
    if err != nil {
         
        fmt.Println("gorm.Open err:",err)
        return
    }
    defer conn.Close()
    
  2. 创建数据库表。 ——不能使用gorm创建数据库。 提前使用 SQL语句,创建好想要的数据库。

    AutoMigrate() 创建表。默认创建的表 为 复数类型。—— 自动添加 “s”

    在创建之前, 添加 conn.SingularTable(true) 可以创建非复数表名的表。

    // 不要复数表名
    conn.SingularTable(true)
    
    // 借助 gorm 创建数据库表.
    fmt.Println(conn.AutoMigrate(new(Student)).Error)
    
  3. 查看

    mysql> desc student;
    +-------+--------------+------+-----+---------+----------------+
    | Field | Type         | Null | Key | Default | Extra          |
    +-------+--------------+------+-----+---------+----------------+
    | id    | int(11)      | NO   | PRI | NULL    | auto_increment |
    | name  | varchar(255) | YES  |     | NULL    |                |
    | age   | int(11)      | YES  |     | NULL    |                |
    +-------+--------------+------+-----+---------+----------------+
    
    

MySQL 包的 init 方法

  1. _ "github.com/go-sql-driver/mysql" 导入包时, “_” ,表示,驱使go系统,在main() 函数被调用之前,自动调用 init() 函数。

  2. go语言中有两个特殊函数: —— 首字母小写,包外可见 。

    1. main() —— 项目的入口函数
    2. init() —— 当导包,但没有在程序中使用。 在main() 调用之前,自动被调用。
      • 查看:光标置于 MySQL包的 “mysql” 上。 使用 Ctrl-鼠标左键。 看到源码。 在 driver.go 底部包含 init() 函数的 定义。
      • init() 作用:实现注册 MySQL 驱动。
  3. 测试:

    test2/ 中

    --- 创建 test2/ 目录, 在内部添加 init()
    
    package test2
    
    import "fmt"
    // 首字母小写函数, 包作用域, 不能跨包使用!
    func init()  {
         
    	fmt.Println("测试 init 函数 ....")
    }
    

    test/ 中

    import (
    	"github.com/jinzhu/gorm"
    	_ "bj38web/web/test2"   //"_" 代码不直接使用包, 底层链接要使用!
    	"fmt"
    )
    func main()  {
         
    	fmt.Println("----this is main ---")
    }
    输出:	测试 init 函数 
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

有码无尘

知识无价,有收获就好!

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值