![](https://img-blog.csdnimg.cn/5ba6ea18e464435099cf63c91a01d939.png?x-oss-process=image/resize,m_fixed,h_224,w_224)
gorm-go连接数据库
文章平均质量分 61
go程序使用gorm连接数据库
玄德公笔记
赠人玫瑰,手有余香。
展开
-
10-gorm-01-连接mysql和建表
1. 连接数据库package mainimport ( "fmt" "github.com/jinzhu/gorm" _ "github.com/jinzhu/gorm/dialects/mysql")func main() { db, err := gorm.Open("mysql", "root:40010355@tcp(127.0.0.1:3306)/crow?charset=utf8&parseTime=True&loc=Local") if err !原创 2022-02-08 23:17:03 · 554 阅读 · 0 评论 -
10-gorm-02-创建数据
文章目录1. 创建数据2. 在钩子中修改字段值1. 创建数据判断主键是否存在如果存在返回flase,如果不存在返回truedb.NewRecord(liuBei)插入数据db.Create(&liuBei)完整示例package mainimport ( "fmt" "github.com/jinzhu/gorm" _ "github.com/jinzhu/gorm/dialects/mysql")type xiShu struct { ID int6原创 2022-02-08 23:19:30 · 664 阅读 · 0 评论 -
10-gorm-03-基本查询
文章目录1. 简单示例2. 基本查询2.1 获取第一条记录,按主键排序2.2 获取一条记录,不指定排序2.3 获取最后一条记录,按主键排序2.4 获取所有的记录2.5 通过主键进行查询 (仅适用于主键是数字类型)2.6 查询指定字段3. where3.1 原生sql3.1.1 获取第一条匹配的记录3.1.2 获取所有匹配3.1.3 <> (不为)3.1.4 IN3.1.5 LIKE3.1.6 AND3.1.7 BETWEEN3.1.8 Time3.2 通过go的对象查询3.2.1 通过Stru原创 2022-02-09 21:06:15 · 3403 阅读 · 1 评论 -
10-gorm-04-查询-初始化
文章目录1. FirstOrInit1.1 FirstOrInit(查询表给Stract赋值)1.2 Attrs (未查到结果给Strict赋值)1.3 Assign(不论是否查到都将参数赋值给 struct)2. FirstOrCreate2.1 FirstOrCreate2.2 Attrs2.3 Assign1. FirstOrInit1.1 FirstOrInit(查询表给Stract赋值)db.FirstOrInit(&user, xiShu{Name: "LiuBei"})原创 2022-02-09 21:08:22 · 947 阅读 · 0 评论 -
10-gorm-05-高级查询
1. Order1.1 简单使用age字段降序,name字段升序(默认)db.Order("age desc, name").Find(&users)//// SELECT * FROM users ORDER BY age desc, name;或者写成db.Order("age desc").Order("name").Find(&users)示例package mainimport ( "fmt" "github.com/jinzhu/gorm"原创 2022-02-10 20:49:34 · 1006 阅读 · 0 评论 -
10-gorm-06-更新
文章目录1. save (更新/创建)2. Update(单列修改)2.1 根据主键修改单列2.2 全部行修改2.3 使用组合条件更新单个属性2.4 使用 map 更新多个属性2.5 使用 struct 更新多个属性3. Updates3.1 限制修改字段范围3.2 限制不修改字段4. 不使用钩子4.1 UpdateColumn/UpdateColumns4.2 批量修改不使用钩子5. RowsAffected(修改影响行数)6. Expr(带有表达式的sql更新)1. save (更新/创建)主键如原创 2022-02-10 20:51:28 · 646 阅读 · 0 评论 -
10-gorm-07-删除
文章目录1. 删除记录2. 批量删除3. 软删除1. 删除记录db.Delete(&xiShu{ID: 2})完整示例删除id=2 的一行package mainimport ( "fmt" "github.com/jinzhu/gorm" _ "github.com/jinzhu/gorm/dialects/mysql")type xiShu struct { ID int64 Name string Age int64}func(xiShu) Tab原创 2022-02-12 11:05:15 · 596 阅读 · 0 评论 -
10-gorm-08-事务
1. 简单示例从一个示例开始说明以有表格如下mysql> select * from xi_shu;+----+------------+------+| id | name | age |+----+------------+------+| 1 | LiuBei | 28 || 2 | GuanYu | 22 || 3 | ZhangFei | 20 || 4 | ZhaoYun | 18 || 5 |原创 2022-02-12 11:01:42 · 275 阅读 · 0 评论 -
11-gorm-V2-01-连接和建表
文章目录1. 连接数据库2 创建表2.1 创建模型2.2 创建表2.3 模型和表名的对应关系2.4 自定义表名1. 连接数据库package mainimport ( "database/sql" "fmt" "gorm.io/driver/mysql" "gorm.io/gorm" "time")func main() { _,sqlDB,_ := connect() sqlDB.Close()}func connect() (db *gorm.DB,sqlDB *sql原创 2022-02-12 23:58:04 · 498 阅读 · 0 评论 -
11-gorm-V2-02-创建数据
文章目录1. 简单示例2. 用指定的字段创建记录3. 批量插入3.1 用数组切片创建3.2 CreateInBatches 批量创建4. 创建钩子4.1 概念4.2 完整示例4.3 跳过钩子5. 根据MAP 创建1. 简单示例db.Create(&liuBei)完整示例package mainimport ( "database/sql" "fmt" "gorm.io/driver/mysql" "gorm.io/gorm" "time")type User str原创 2022-02-13 20:56:48 · 382 阅读 · 0 评论 -
11-gorm-v2-03-基本查询
文章目录1. 连接数据库2 创建表2.1 创建模型2.2 创建表2.3 模型和表名的对应关系2.4 自定义表名1. 连接数据库package mainimport ( "database/sql" "fmt" "gorm.io/driver/mysql" "gorm.io/gorm" "time")func main() { _,sqlDB,_ := connect() sqlDB.Close()}func connect() (db *gorm.DB,sqlDB *sql原创 2022-02-13 20:54:33 · 673 阅读 · 0 评论 -
11-gorm-V2-04-高级查询
文章目录1. 用Struct或Map接收数据1.1 Find到Struct1.2 Find到Map2. 子查询3. Group/Having3.1 Group完整示例3.2 Having4. 变量4.1 使用sql.Named定义4.2 使用map定义变量5. 用Rows() 迭代6. 查钩子7. Pluck(单列查询)8. Scopes(调用查询函数)8.1 使用8.2 示例9. Count1. 用Struct或Map接收数据1.1 Find到Struct定义一个小的结构体来接收表中的查询结果db原创 2022-02-14 23:24:44 · 985 阅读 · 0 评论 -
11-gorm-V2-05-初始化
文章目录1. FirstOrInit1.1 基本使用1.1.1 使用说明1.1.2 完整示例1.2 Attrs (未查到结果时给Struct赋值)1.2.1 使用说明1.2.2 示例1.3 Assign(不论是否查到都将参数赋值给 struct)1.3.1 使用说明1.3.2 示例2. FirstOrCreate2.1 基本使用2.1.1 使用说明2.2.2 示例2.2 Attrs2.3 Assign1. FirstOrInit注意:FirstOrInit只会赋值给结构体,而不会写入表FirstO原创 2022-02-14 23:27:38 · 541 阅读 · 0 评论 -
11-gormV2-06-更新
文章目录1. save (更新/创建)2. Update(单列修改)2.1 根据主键修改单列2.1.1 使用2.1.2 示例2.2 单列修改(不论是否主键)3. Updates(多列修改)3.1 基本使用3.2 Select(限制修改字段范围)3.2 Omit(排除修改字段范围)4. 钩子4.1 创建钩子4.2 不使用钩子5. RowsAffected(修改影响行数)6. Expr(带有表达式的sql更新)1. save (更新/创建)主键如果查到,更新数据主键如果未查到,插入一条数据 l原创 2022-02-17 20:20:27 · 638 阅读 · 0 评论 -
11-gormV2-07-删除
1. 按主键删除1.1 使用说明如果指定的不是主键,则会触发批量删除,但是没有Where的批量删除被gorm禁止。样例db.Delete(&User{ID: 2})或写做db.Delete(&User{ID: 2},2)1.2 完整示例删除id=2 的一行package mainimport ( "database/sql" "fmt" "gorm.io/driver/mysql" "gorm.io/gorm" "time")type Us原创 2022-02-17 20:22:03 · 575 阅读 · 0 评论 -
11-gorm-V2-08 事务
文章目录1. 语法2. 完整示例1. 语法开启事务tx := db.Begin()在事务中执行操作从这里开始使用 ‘tx’,而不是 ‘db’tx.Create(...)400回滚事务tx.Rollback()提交这个事务tx.Commit()2. 完整示例package mainimport ( "database/sql" "fmt" "gorm.io/driver/mysql" "gorm.io/gorm" "time")type原创 2022-02-22 20:26:18 · 436 阅读 · 0 评论