补充: XORM框架 === 我们上面的课件讲解了原生操作MySQL 现在我们就来玩玩ORM操作MySQL ***** 开启显示SQL ``` func init() { Engine, Err = xorm.NewEngine(config.BasicsConfig.DriverName, config.BasicsConfig.Dsn) if Err != nil { panic(Err.Error()) } Engine.ShowSQL(true) //显示生成的sql SynchronousData() } ``` Go语言中的ORM习惯直接在定义结构的基础上配和tag来定义模型: ``` type Account struct { Id int64 `xorm:"pk autoincr"` Name string `xorm:"unique"` Balance float64 Version int `xorm:"version"` //乐观锁 } ``` 自动同步表结构 `err := Engine.Sync(new(tab_name))` 基础目录搭建 ``` . ├── config 配置相关定义 │   └── infrastructureConfig.go 获取基础配置信息 ├── dbops 数据库相关 │   ├── conn.go 获取数据库连接 │   └── model.go 数据库模型定义 ├── defs 通用定义 │   └── dbdef.go ├── go.mod ├── go.sum ├── InfrastructureConfig.json 基础配置文件 ├── LICENSE ├── main.go └── README.md ``` 这个地方和以前的架构差不多,大家先自己动手实践一下,等会再看我的代码 ***** ### CURL 学习一本语言怎么也离不开curd啊 - 新增记录 `_,err := Engine.Insert(&Account{Name:name,Balance:balance})` - 删除记录 `_,err := Engine.Delete(&Account{Id:id})` - 获取并修改记录 ``` a := &Account{} has,err := Engine.Id(id).Get(a) a.Balance += deposit _,err = Engine.Where("name = ?",a.Name).Update(a) ``` - 批量获取数据 ``` func GetAccountsDESCId() ([]*Account,error) { var as []*Account err := Engine.Desc("id").Find(&as) //get获取一个 find获取多个 return as,err } if account, err := dbops.GetAccountsDESCId();err != nil{ fmt.Println("数据错误!") break }else{ for _,k := range account { fmt.Println(k) } } ``` 本次课程代码 [https://github.com/dollarkillerx/GolangWebCourseware/tree/2c88994bc288314d00d7cbb9df0531eb6c7754ee](https://github.com/dollarkillerx/GolangWebCourseware/tree/2c88994bc288314d00d7cbb9df0531eb6c7754ee)