官网相关文档
https://xorm.io/zh/docs/chapter-01/1.engine/
https://gitea.com/xorm/xorm/src/branch/master/README_CN.md
xorm 是一个简单而强大的Go语言ORM库. 通过它可以使数据库操作非常简便
安装
go get xorm.io/xorm
特性:
- 支持 Struct 和数据库表之间的灵活映射,并支持自动同步
- 事务支持
- 同时支持原始SQL语句和ORM操作的混合执行
- 使用连写来简化调用
- 支持使用ID, In, Where, Limit, Join, Having, Table, SQL, Cols等函数和结构体等方式作为条件
- 支持级联加载Struct
- Schema支持(仅Postgres)
- 支持缓存
- 通过 xorm.io/reverse 支持根据数据库自动生成 xorm 结构体
- 支持记录版本(即乐观锁)
- 通过 xorm.io/builder 内置 SQL Builder 支持
- 上下文缓存支持
- 支持日志上下文
使用
- 封装一个连接mysql的函数
package util
import (
"fmt"
_ "github.com/go-sql-driver/mysql"
"xorm.io/xorm"
"xorm.io/xorm/names"
)
var Engine *xorm.Engine
var (
host = "127.0.0.1"
port = "3306"
username = "root"
pasword = "111111"
defaultCode = "charset=utf8"
dbName = "test"
)
func InitMysql() error {
var err error
dsn := fmt.Sprintf("%s:%s@tcp(%s:%s)/%s?%s", username, pasword, host, port, dbName, defaultCode)
Engine, err = xorm.NewEngine("mysql", dsn)
if err != nil {
fmt.Println(err)
return err
}
err = Engine.Ping()
if err != nil {
fmt.Println(err)
return err
}
fmt.Println("connect success")
Engine.SetMapper(names.SameMapper{}) //设置表字段名与结构体字段名一致,默认的是SnakeMapper
return nil
}
- 调用
package main
import (
"basicProject/util"
"fmt"
)
type Goods struct {
Id int
Name string
CreateTime string
UpdateTime string
}
func main() {
err := util.InitMysql()
if err != nil {
fmt.Println("connect fail")
}
err = util.Engine.Sync(new(Goods)) //同步,把结构体同步到数据库里,生成对应的表和字段
//同步后如果结构体又增加了字段,再次编译运行后就会自动同步新的字段到数据表里
if err != nil {
fmt.Println(err)
return
}
}
标签:Engine,err,Xorm,fmt,支持,io,简单,Go,xorm
From: https://www.cnblogs.com/bangbangzoutianya/p/17252998.html