用于Golang的出色的ORM库旨在对开发人员友好。
GORM 官方支持的数据库类型有: MySQL, PostgreSQL, SQlite, SQL Server
安装
1 | go get -u gorm.io/gorm |
字段级权限控制
1 | type User struct { |
字段标签
1 | column 指定 db 列名 |
导入包
1 | import ( |
连接mysql
1 | var DatabaseSetting = struct { |
连接池
GORM 使用 database/sql 维护连接池
1 | sqlDB, err := db.DB() |
禁用复数形式
1 | db.SingularTable(true) |
为表名添加前缀
1 | gorm.DefaultTableNameHandler= func(db *gorm.DB, defaultTableName string) string { |
设置打印日志
1 | db.LogMode(true) |
关于数据库sql.DB连接的几个参数优化
关于sql.DB,在建立和使用数据库连接方面有几个参数我们可以根据实际场景来进行优化一下,配置得当的话可以有效提高性能和降低系统资源消耗。
- SetMaxOpenConns 用于设置最大打开的连接数,默认值为0,表示不限制。
- SetMaxIdleConns 用于设置闲置的连接数,默认值为2;
- SetConnMaxLifetime 可以限制一个连接使用的最大时长,默认值为0,表示不限制。
1 | db.DB().SetMaxOpenConns(1000) |
参考:https://blog.csdn.net/moxiaomomo/article/details/105003475
gorm 关系 Many to Many 多对多
多对多(Many to Many)在两个模型之间增加一个 join 表(中间表)。
1 |
|
用 AutoMigrate 方法 User 表,会自动创建 user_languages 表,模式为:
1 | CREATE TABLE "user_languages" ( |
参考:https://blog.csdn.net/weixin_33881140/article/details/92085805
查询
检索单个对象
GORM 提供了 First
、Take
、Last
方法,以便从数据库中检索单个对象。当查询数据库时它添加了 LIMIT 1 条件,且没有找到记录时,它会返回 ErrRecordNotFound
错误
1 | // 获取第一条记录(主键升序) |