01-连接和建表
1.01-包引用和引用顺序2.02-运算符号、标识符、注释、关键字3.03-变量和作用域4.02-常量(const)5.03-数组(array)6.04-切片(slice)7.05-map8.06-指针(pointer)9.07-通道(channel)10.08-结构体(struct)11.01-if语句12.02-for循环13.04-select语句14.03-switch语句15.make()、new()16.copy(切片间复制)17.append(增加切片成员)18.delete(删除map的成员)19.panic&recover20.03-匿名函数和闭包21.01-函数简单使用22.02-形参和实参23.04-递归函数24.05-方法25.06-接口(interface)26.01-并发27.02-携程通讯28.03-携程同步
29.01-连接和建表
30.02-创建数据31.03-基本查询32.04-高级查询33.05-初始化34.06-更新数据35.07-删除数据36.08 事务37.根据操作系统程序自动选择不同常量38.golang字串的base64编码解码39.golang数据类型转换40.golang 时间/时间戳的获取和转换@
1. 连接数据库
package main import ( "database/sql" "fmt" "gorm.io/driver/mysql" "gorm.io/gorm" "time" ) func main() { _,sqlDB,_ := connect() sqlDB.Close() } func connect() (db *gorm.DB,sqlDB *sql.DB,err error) { dsn := "root:40010355@tcp(127.0.0.1:3306)/crow?charset=utf8&parseTime=True&loc=Local" db, err = gorm.Open(mysql.Open(dsn), &gorm.Config{}) sqlDB,_ = db.DB() if err != nil { fmt.Printf(err.Error()) defer sqlDB.Close() }else { fmt.Printf("OK\n") sqlDB.SetMaxIdleConns(10) sqlDB.SetMaxOpenConns(100) sqlDB.SetConnMaxLifetime(time.Hour) } return }
2 创建表
2.1 创建模型
- 结构体名和表名相对应(关系见 2.3)
- 结构体成员和列名对应,如:LiuBei ---> liu_bei
type User struct { ID int64 Age int64 Name string }
2.2 创建表
可将 “1. 连接数据库” 的示例代码中main函数替换如下
func main() { db,sqlDB,_ := connect() defer sqlDB.Close() db.Migrator().CreateTable(&User{}) }
- 生成表结构如下
mysql> desc users; +-------+------------+------+-----+---------+----------------+ | Field | Type | Null | Key | Default | Extra | +-------+------------+------+-----+---------+----------------+ | id | bigint(20) | NO | PRI | NULL | auto_increment | | age | bigint(20) | YES | | NULL | | | name | longtext | YES | | NULL | | +-------+------------+------+-----+---------+----------------+ 3 rows in set (0.00 sec)
2.3 模型和表名的对应关系
结构体 | 库名 |
---|---|
LiuBei | liu_beis |
Guan_Yu | guan_yu |
ZhangFei01 | zhang_fei01 |
说明:以驼峰定义结构体,库名会变成小写中间以”_”分割,结尾加“s”。如果以数字结尾则不会加"s"。 |
2.4 自定义表名
添加如下代码
func(User) TableName() string { return "ha_ha" }
之后生成库名为"ha_ha"
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· AI技术革命,工作效率10个最佳AI工具