<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
  <channel>
    <title>GORM 学习教程 on Go Home</title>
    <link>https://blog.911015.com/gorm-study/</link>
    <description>Recent content in GORM 学习教程 on Go Home</description>
    <generator>Hugo -- gohugo.io</generator>
    <language>en-us</language>
    <atom:link href="https://blog.911015.com/gorm-study/index.xml" rel="self" type="application/rss+xml" />
    <item>
      <title>GORM 入门指南</title>
      <link>https://blog.911015.com/gorm-study/01.html</link>
      <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
      <guid>https://blog.911015.com/gorm-study/01.html</guid>
      <description>第一章：GORM 入门指南 1.1 GORM 简介 GORM 是 Go 语言中最流行的 ORM 库之一，全称为 Go Object Relational Mapping。它由 Jinzhu 开发并维护，提供了简洁优雅的 API 来操作数据库。&#xA;GORM 的核心特性 特性 说明 全功能 ORM 支持关联（一对一、一对多、多对多）、钩子、预加载、连接池等 链式操作 流畅的查询构建器 API 自动迁移 根据模型自动创建/更新数据库表结构 通用数据库支持 MySQL、PostgreSQL、SQLite、SQL Server、ClickHouse 等 可扩展性 基于 GORM 编写插件，如 Prometheus 监控、锁机制等 上下文支持 完整支持 context.Context GORM 版本 GORM v1: 第一个稳定版本，已停止维护 GORM v2: 当前主流版本，完全重写，性能更好（推荐） 1.2 环境准备 安装 Go 确保 Go 版本 &amp;gt;= 1.16：&#xA;go version 安装 GORM go get -u gorm.io/gorm 安装数据库驱动 根据你使用的数据库选择对应的驱动：</description>
    </item>
    <item>
      <title>模型定义详解</title>
      <link>https://blog.911015.com/gorm-study/02.html</link>
      <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
      <guid>https://blog.911015.com/gorm-study/02.html</guid>
      <description>第二章：模型定义详解 2.1 基础模型结构 内置 gorm.Model type Model struct { ID uint `gorm:&amp;#34;primaryKey&amp;#34;` // 自增主键 CreatedAt time.Time // 创建时间 UpdatedAt time.Time // 更新时间 DeletedAt gorm.DeletedAt `gorm:&amp;#34;index&amp;#34;` // 软删除时间戳 } 使用方式：&#xA;type User struct { gorm.Model Name string } 自定义基础模型 type BaseModel struct { ID uint64 `gorm:&amp;#34;primaryKey;autoIncrement;comment:主键ID&amp;#34;` CreatedAt time.Time `gorm:&amp;#34;index;comment:创建时间&amp;#34;` UpdatedAt time.Time `gorm:&amp;#34;comment:更新时间&amp;#34;` DeletedAt gorm.DeletedAt `gorm:&amp;#34;index;comment:删除时间&amp;#34;` } type User struct { BaseModel Name string `gorm:&amp;#34;comment:用户名&amp;#34;` } 2.2 字段标签（Tags） GORM 通过结构体标签配置字段属性：&#xA;常用标签 标签 说明 示例 column 指定列名 gorm:&amp;quot;column:user_name&amp;quot; type 指定数据类型 gorm:&amp;quot;type:varchar(100)&amp;quot; size 字段大小 gorm:&amp;quot;size:255&amp;quot; primaryKey 设为主键 gorm:&amp;quot;primaryKey&amp;quot; unique 唯一约束 gorm:&amp;quot;unique&amp;quot; uniqueIndex 唯一索引 gorm:&amp;quot;uniqueIndex:idx_email&amp;quot; index 普通索引 gorm:&amp;quot;index:idx_name&amp;quot; default 默认值 gorm:&amp;quot;default:&#39;unknown&#39;&amp;quot; not null 非空约束 gorm:&amp;quot;not null&amp;quot; autoIncrement 自增 gorm:&amp;quot;autoIncrement&amp;quot; comment 字段注释 gorm:&amp;quot;comment:用户姓名&amp;quot; embedded 嵌入字段 gorm:&amp;quot;embedded&amp;quot; embeddedPrefix 嵌入前缀 gorm:&amp;quot;embeddedPrefix:info_&amp;quot; - 忽略字段 gorm:&amp;quot;-&amp;quot; 完整示例 type Product struct { ID uint `gorm:&amp;#34;primaryKey;autoIncrement;column:product_id&amp;#34;` Code string `gorm:&amp;#34;uniqueIndex;size:100;not null;comment:产品编码&amp;#34;` Name string `gorm:&amp;#34;type:varchar(200);index:idx_name;comment:产品名称&amp;#34;` Price float64 `gorm:&amp;#34;type:decimal(10,2);default:0;comment:价格&amp;#34;` Description string `gorm:&amp;#34;type:text;comment:产品描述&amp;#34;` Status int `gorm:&amp;#34;default:1;comment:状态：1-上架 2-下架&amp;#34;` IsDeleted bool `gorm:&amp;#34;default:false;-&amp;#34;` // 忽略该字段 CreatedAt time.</description>
    </item>
    <item>
      <title>数据库连接与配置</title>
      <link>https://blog.911015.com/gorm-study/03.html</link>
      <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
      <guid>https://blog.911015.com/gorm-study/03.html</guid>
      <description>第三章：数据库连接与配置 3.1 支持的数据库 GORM 官方支持以下数据库：&#xA;数据库 驱动包 DSN 示例 MySQL gorm.io/driver/mysql user:pass@tcp(127.0.0.1:3306)/dbname?charset=utf8mb4&amp;amp;parseTime=True&amp;amp;loc=Local PostgreSQL gorm.io/driver/postgres host=localhost user=gorm password=gorm dbname=gorm port=9920 sslmode=disable TimeZone=Asia/Shanghai SQLite gorm.io/driver/sqlite test.db 或 :memory: SQL Server gorm.io/driver/sqlserver sqlserver://gorm:LoremIpsum86@localhost:9930?database=gorm ClickHouse gorm.io/driver/clickhouse tcp://localhost:9000?database=gorm&amp;amp;username=gorm&amp;amp;password=gorm&amp;amp;read_timeout=10&amp;amp;write_timeout=20 3.2 MySQL 连接详解 基础连接 package main import ( &amp;#34;gorm.io/driver/mysql&amp;#34; &amp;#34;gorm.io/gorm&amp;#34; ) func main() { dsn := &amp;#34;user:password@tcp(127.0.0.1:3306)/dbname?charset=utf8mb4&amp;amp;parseTime=True&amp;amp;loc=Local&amp;#34; db, err := gorm.Open(mysql.Open(dsn), &amp;amp;gorm.Config{}) if err != nil { panic(&amp;#34;数据库连接失败: &amp;#34; + err.Error()) } } DSN 参数说明 参数 说明 建议值 charset 字符集 utf8mb4（支持 emoji） parseTime 解析时间类型 True loc 时区 Local 或 Asia/Shanghai timeout 连接超时 10s readTimeout 读取超时 30s writeTimeout 写入超时 30s interpolateParams 参数插值 true（减少预处理） multiStatements 多语句执行 按需开启 高级 DSN 配置 dsn := &amp;#34;user:password@tcp(127.</description>
    </item>
    <item>
      <title>CRUD 基础操作</title>
      <link>https://blog.911015.com/gorm-study/04.html</link>
      <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
      <guid>https://blog.911015.com/gorm-study/04.html</guid>
      <description>第四章：CRUD 基础操作 4.1 创建（Create） 单条记录创建 user := User{Name: &amp;#34;张三&amp;#34;, Email: &amp;#34;zhangsan@example.com&amp;#34;, Age: 25} result := db.Create(&amp;amp;user) // 获取结果 fmt.Println(user.ID) // 返回主键 fmt.Println(result.Error) // 返回错误 fmt.Println(result.RowsAffected) // 返回影响的记录数 指定字段创建 // 只创建 Name 字段 db.Select(&amp;#34;Name&amp;#34;).Create(&amp;amp;user) // INSERT INTO `users` (`name`) VALUES (&amp;#34;张三&amp;#34;) // 忽略 Email 字段 db.Omit(&amp;#34;Email&amp;#34;).Create(&amp;amp;user) // INSERT INTO `users` (`name`,`age`) VALUES (&amp;#34;张三&amp;#34;, 25) 批量创建 users := []User{ {Name: &amp;#34;张三&amp;#34;, Email: &amp;#34;zhangsan@example.com&amp;#34;}, {Name: &amp;#34;李四&amp;#34;, Email: &amp;#34;lisi@example.com&amp;#34;}, {Name: &amp;#34;王五&amp;#34;, Email: &amp;#34;wangwu@example.com&amp;#34;}, } // 方式1：传递切片 db.</description>
    </item>
    <item>
      <title>查询进阶</title>
      <link>https://blog.911015.com/gorm-study/05.html</link>
      <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
      <guid>https://blog.911015.com/gorm-study/05.html</guid>
      <description>第五章：查询进阶 5.1 高级 Where 条件 字符串条件 // 基本等于 db.Where(&amp;#34;name = ?&amp;#34;, &amp;#34;张三&amp;#34;).Find(&amp;amp;users) // 多条件 db.Where(&amp;#34;name = ? AND age &amp;gt;= ?&amp;#34;, &amp;#34;张三&amp;#34;, 18).Find(&amp;amp;users) // IN 查询 db.Where(&amp;#34;name IN ?&amp;#34;, []string{&amp;#34;张三&amp;#34;, &amp;#34;李四&amp;#34;, &amp;#34;王五&amp;#34;}).Find(&amp;amp;users) // LIKE 模糊查询 db.Where(&amp;#34;name LIKE ?&amp;#34;, &amp;#34;%张%&amp;#34;).Find(&amp;amp;users) // BETWEEN db.Where(&amp;#34;age BETWEEN ? AND ?&amp;#34;, 18, 30).Find(&amp;amp;users) // 时间范围 db.Where(&amp;#34;created_at &amp;gt; ?&amp;#34;, time.Now().Add(-24*time.Hour)).Find(&amp;amp;users) // IS NULL / IS NOT NULL db.Where(&amp;#34;email IS NOT NULL&amp;#34;).Find(&amp;amp;users) 结构体条件 // 非零值字段参与查询 db.Where(&amp;amp;User{Name: &amp;#34;张三&amp;#34;, Age: 0}).</description>
    </item>
    <item>
      <title>关联关系</title>
      <link>https://blog.911015.com/gorm-study/06.html</link>
      <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
      <guid>https://blog.911015.com/gorm-study/06.html</guid>
      <description>第六章：关联关系 6.1 关联类型概览 GORM 支持四种主要关联关系：&#xA;关系 说明 数据库实现 Belongs To 属于（多对一） 外键在子表 Has One 拥有（一对一） 外键在关联表 Has Many 拥有多个（一对多） 外键在关联表 Many To Many 多对多 中间表 6.2 Belongs To（属于） 场景：用户属于一个公司，多对一关系&#xA;type Company struct { ID int Name string } type User struct { ID int Name string CompanyID int // 外键 Company Company // 关联 Company } 重写外键 type User struct { ID int Name string CorpID int // 外键字段 Corp Company `gorm:&amp;#34;foreignKey:CorpID&amp;#34;` // 指定外键 } 重写引用 type Company struct { Code string `gorm:&amp;#34;primaryKey&amp;#34;` // 非 ID 主键 Name string } type User struct { ID int Name string CompanyCode string // 外键对应 Code Company Company `gorm:&amp;#34;references:Code&amp;#34;` // 指定引用字段 } 6.</description>
    </item>
    <item>
      <title>事务处理</title>
      <link>https://blog.911015.com/gorm-study/07.html</link>
      <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
      <guid>https://blog.911015.com/gorm-study/07.html</guid>
      <description>第七章：事务处理 7.1 事务基础 事务是数据库操作的基本单元，具有 ACID 特性：&#xA;特性 说明 Atomicity（原子性） 事务中的所有操作要么全部成功，要么全部失败 Consistency（一致性） 事务执行前后数据库处于一致状态 Isolation（隔离性） 并发事务相互隔离 Durability（持久性） 事务提交后数据永久保存 7.2 自动事务（Transaction 方法） GORM 的 Transaction 方法会自动处理提交和回滚：&#xA;err := db.Transaction(func(tx *gorm.DB) error { // 在事务中执行操作，使用 tx 而非 db if err := tx.Create(&amp;amp;user).Error; err != nil { return err // 返回错误自动回滚 } if err := tx.Create(&amp;amp;order).Error; err != nil { return err } return nil // 返回 nil 自动提交 }) if err != nil { fmt.</description>
    </item>
    <item>
      <title>钩子与回调</title>
      <link>https://blog.911015.com/gorm-study/08.html</link>
      <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
      <guid>https://blog.911015.com/gorm-study/08.html</guid>
      <description>第八章：钩子与回调 8.1 钩子概述 GORM 钩子是在数据库操作生命周期中自动执行的回调函数，可以在创建、查询、更新、删除操作前后插入自定义逻辑。&#xA;8.2 支持的钩子 创建相关钩子 钩子 触发时机 BeforeSave 保存（创建/更新）前 BeforeCreate 创建前 AfterSave 保存后 AfterCreate 创建后 查询相关钩子 钩子 触发时机 AfterFind 查询后 更新相关钩子 钩子 触发时机 BeforeSave 保存前 BeforeUpdate 更新前 AfterSave 保存后 AfterUpdate 更新后 删除相关钩子 钩子 触发时机 BeforeDelete 删除前 AfterDelete 删除后 8.3 定义钩子 type User struct { ID uint Name string Password string CreatedAt time.Time UpdatedAt time.Time } // BeforeCreate 创建前钩子 func (u *User) BeforeCreate(tx *gorm.DB) (err error) { u.CreatedAt = time.</description>
    </item>
    <item>
      <title>迁移与结构管理</title>
      <link>https://blog.911015.com/gorm-study/09.html</link>
      <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
      <guid>https://blog.911015.com/gorm-study/09.html</guid>
      <description>第九章：迁移与结构管理 9.1 自动迁移概述 GORM 的自动迁移功能可以根据模型定义自动创建或更新数据库表结构。&#xA;// 基础用法 db.AutoMigrate(&amp;amp;User{}) // 多个模型 db.AutoMigrate(&amp;amp;User{}, &amp;amp;Product{}, &amp;amp;Order{}) // 指定表名 db.Table(&amp;#34;my_users&amp;#34;).AutoMigrate(&amp;amp;User{}) 9.2 AutoMigrate 行为 自动迁移会做什么 创建新表 添加缺失的列 创建缺失的索引和外键 自动迁移不会做什么 不会删除不用的列（保护数据） 不会修改列类型（可能导致数据丢失） 不会删除索引 不会重命名列 9.3 迁移方法 普通迁移 db.AutoMigrate(&amp;amp;User{}) 静默迁移（不输出日志） db.Set(&amp;#34;gorm:table_options&amp;#34;, &amp;#34;ENGINE=InnoDB&amp;#34;).AutoMigrate(&amp;amp;User{}) 检查表是否存在 // 检查表是否存在 hasTable := db.Migrator().HasTable(&amp;amp;User{}) hasTable = db.Migrator().HasTable(&amp;#34;users&amp;#34;) // 检查列是否存在 hasColumn := db.Migrator().HasColumn(&amp;amp;User{}, &amp;#34;Name&amp;#34;) // 检查索引是否存在 hasIndex := db.Migrator().HasIndex(&amp;amp;User{}, &amp;#34;idx_name&amp;#34;) 9.4 表操作 创建表 db.Migrator().CreateTable(&amp;amp;User{}) // 带有选项 db.Set(&amp;#34;gorm:table_options&amp;#34;, &amp;#34;ENGINE=InnoDB CHARSET=utf8mb4&amp;#34;).Migrator().CreateTable(&amp;amp;User{}) 删除表 db.Migrator().DropTable(&amp;amp;User{}) db.Migrator().DropTable(&amp;#34;users&amp;#34;) db.Migrator().DropTable(&amp;#34;users&amp;#34;, &amp;#34;products&amp;#34;) 重命名表 db.</description>
    </item>
    <item>
      <title>性能优化</title>
      <link>https://blog.911015.com/gorm-study/10.html</link>
      <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
      <guid>https://blog.911015.com/gorm-study/10.html</guid>
      <description>第十章：性能优化 10.1 连接池优化 核心参数 sqlDB, err := db.DB() if err != nil { log.Fatal(err) } // 最大空闲连接数（建议：连接数 / 2） sqlDB.SetMaxIdleConns(25) // 最大打开连接数（建议：连接数） sqlDB.SetMaxOpenConns(50) // 连接最大生命周期（防止连接过期） sqlDB.SetConnMaxLifetime(30 * time.Minute) // 连接最大空闲时间（Go 1.15+） sqlDB.SetConnMaxIdleTime(10 * time.Minute) 不同场景推荐配置 场景 MaxIdleConns MaxOpenConns ConnMaxLifetime 低并发 Web 10-25 25-50 30m 高并发 API 50-100 100-200 15m 批处理任务 5-10 20-30 60m 微服务 5-15 20-40 30m 10.2 查询优化 只查询需要的字段 // 差：SELECT * db.Find(&amp;amp;users) // 好：只选需要的字段 db.Select(&amp;#34;id&amp;#34;, &amp;#34;name&amp;#34;, &amp;#34;email&amp;#34;).Find(&amp;amp;users) // 更好：使用特定结构体 type UserListItem struct { ID uint Name string } var items []UserListItem db.</description>
    </item>
    <item>
      <title>高级特性</title>
      <link>https://blog.911015.com/gorm-study/11.html</link>
      <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
      <guid>https://blog.911015.com/gorm-study/11.html</guid>
      <description>第十一章：高级特性 11.1 上下文（Context）支持 GORM 完全支持 Go 的 context.Context，可用于超时控制、链路追踪等。&#xA;超时控制 ctx, cancel := context.WithTimeout(context.Background(), 5*time.Second) defer cancel() // 所有数据库操作都使用上下文 db.WithContext(ctx).Find(&amp;amp;users) db.WithContext(ctx).Create(&amp;amp;user) db.WithContext(ctx).Update(&amp;#34;name&amp;#34;, &amp;#34;张三&amp;#34;) 传递元数据 // 在 context 中存储当前用户ID ctx := context.WithValue(context.Background(), &amp;#34;userID&amp;#34;, currentUserID) // 在钩子中使用 func (u *User) BeforeCreate(tx *gorm.DB) error { if userID := tx.Statement.Context.Value(&amp;#34;userID&amp;#34;); userID != nil { // 记录创建人 } return nil } 链路追踪 import &amp;#34;go.opentelemetry.io/otel&amp;#34; func TraceMiddleware() func(*gorm.DB) { return func(db *gorm.DB) { ctx := db.Statement.Context tracer := otel.</description>
    </item>
    <item>
      <title>插件与扩展</title>
      <link>https://blog.911015.com/gorm-study/12.html</link>
      <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
      <guid>https://blog.911015.com/gorm-study/12.html</guid>
      <description>第十二章：插件与扩展 12.1 插件机制概述 GORM 提供了强大的插件机制，允许开发者在数据库操作的不同阶段注入自定义逻辑。&#xA;12.2 常用官方插件 Prometheus 监控 import &amp;#34;github.com/wei840222/gorm-prom&amp;#34; db.Use(gormprom.New(gormprom.Config{ DBName: &amp;#34;myapp&amp;#34;, // 数据库名称 StartServer: true, // 启动 HTTP 服务 HTTPServerPort: 8080, // 服务端口 })) // 访问 http://localhost:8080/metrics 查看指标 乐观锁 import &amp;#34;gorm.io/plugin/optimisticlock&amp;#34; type Product struct { ID uint Name string Version optimisticlock.Version // 版本号 Stock int } // 更新时自动检查版本号 result := db.Model(&amp;amp;product).Update(&amp;#34;stock&amp;#34;, product.Stock-1) if result.RowsAffected == 0 { // 版本冲突，需要重试 } 读写分离 import &amp;#34;gorm.io/plugin/dbresolver&amp;#34; db.Use(dbresolver.Register(dbresolver.Config{ Sources: []gorm.Dialector{mysql.Open(&amp;#34;write_dsn&amp;#34;)}, Replicas: []gorm.</description>
    </item>
    <item>
      <title>实战案例 - 博客系统</title>
      <link>https://blog.911015.com/gorm-study/13.html</link>
      <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
      <guid>https://blog.911015.com/gorm-study/13.html</guid>
      <description>第十三章：实战案例 - 博客系统 13.1 项目概述 我们将构建一个完整的博客系统，包含以下功能模块：&#xA;用户模块：注册、登录、个人中心 文章模块：发布、编辑、分类、标签 评论模块：文章评论、回复 管理后台：数据统计、内容管理 13.2 项目结构 blog-example/ ├── go.mod ├── main.go ├── config/ │ └── config.go ├── model/ │ ├── base.go │ ├── user.go │ ├── article.go │ ├── category.go │ ├── tag.go │ ├── comment.go │ └── migrate.go ├── dao/ │ ├── user_dao.go │ ├── article_dao.go │ └── comment_dao.go ├── service/ │ ├── user_service.go │ ├── article_service.go │ └── comment_service.go ├── api/ │ ├── handler/ │ │ ├── user_handler.</description>
    </item>
    <item>
      <title>常见问题与最佳实践</title>
      <link>https://blog.911015.com/gorm-study/14.html</link>
      <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
      <guid>https://blog.911015.com/gorm-study/14.html</guid>
      <description>第十四章：常见问题与最佳实践 14.1 错误处理 常见错误类型 import ( &amp;#34;errors&amp;#34; &amp;#34;gorm.io/gorm&amp;#34; ) // 记录不存在 err := db.First(&amp;amp;user, 100).Error if errors.Is(err, gorm.ErrRecordNotFound) { // 处理记录不存在 } // 重复键错误（MySQL） if mysqlErr, ok := err.(*mysql.MySQLError); ok { if mysqlErr.Number == 1062 { // 唯一约束冲突 } } // 外键约束错误 if errors.Is(err, gorm.ErrForeignKeyViolated) { // 外键约束违反 } // 约束验证错误 if errors.Is(err, gorm.ErrCheckConstraintViolated) { // 检查约束违反 } 错误处理最佳实践 type DatabaseError struct { Code string Message string Err error } func (e *DatabaseError) Error() string { return e.</description>
    </item>
    <item>
      <title>GORM Gen 类型安全 ORM</title>
      <link>https://blog.911015.com/gorm-study/15.html</link>
      <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
      <guid>https://blog.911015.com/gorm-study/15.html</guid>
      <description>第十五章：GORM Gen 类型安全 ORM 15.1 GORM Gen 简介 GORM Gen 是基于 GORM 的代码生成工具，提供类型安全的查询 API，解决了原生 GORM 的以下问题：&#xA;原生 GORM 问题 GORM Gen 解决方案 字符串字段名易出错 编译时检查的类型安全 API 缺少 IDE 智能提示 完全的类型推导和补全 重构时容易遗漏 编译错误提示需要修改的地方 复杂查询可读性差 链式调用，流畅表达 15.2 安装与配置 安装 go get -u gorm.io/gen 代码生成配置 package main import ( &amp;#34;gorm.io/driver/mysql&amp;#34; &amp;#34;gorm.io/gen&amp;#34; &amp;#34;gorm.io/gorm&amp;#34; ) func main() { g := gen.NewGenerator(gen.Config{ OutPath: &amp;#34;./dao/query&amp;#34;, // 生成代码的输出路径 OutFile: &amp;#34;./dao/query/gen.go&amp;#34;, // 输出文件名 // 模型包名 ModelPkgPath: &amp;#34;./dao/model&amp;#34;, // 生成模式 Mode: gen.</description>
    </item>
    <item>
      <title>综合实战 - 企业级项目</title>
      <link>https://blog.911015.com/gorm-study/16.html</link>
      <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
      <guid>https://blog.911015.com/gorm-study/16.html</guid>
      <description>第十六章：综合实战 - 企业级项目 16.1 项目概述 构建一个企业级用户权限+订单管理系统，综合运用前面所有知识点：&#xA;用户权限模块：RBAC 权限控制 订单模块：复杂业务逻辑、事务处理 技术栈：GORM + GORM Gen 混用 16.2 系统架构 enterprise-example/ ├── cmd/ │ └── server/ │ └── main.go ├── internal/ │ ├── domain/ # 领域模型 │ │ ├── user.go │ │ ├── role.go │ │ ├── permission.go │ │ └── order.go │ ├── repository/ # 数据访问层 │ │ ├── user_repo.go │ │ └── order_repo.go │ ├── service/ # 业务逻辑层 │ │ ├── user_service.go │ │ └── order_service.</description>
    </item>
  </channel>
</rss>
