xorm安装
go get github.com/go-xorm/xorm
mysql连接示例
本节内容中,我们将以连接mysql为案例,演示xorm的相关操作。
-
创建引擎
engine, err := xorm.NewEngine(driverName, dataSourceName)
如上通过xorm.NewEngine方法创建一个数据库操作引擎,该方法需要两个参数:driveName和dataSourceName。在mysql引擎连接中,两个参数如下:
driverName := "mysql"
dataSrouceName := "用户名:密码@/数据库名称?charset=utf8"
另外,需要格外注意一点,需要在使用数据库引擎创建的地方导入对应的数据库引擎驱动,比如本节内容中的mysql数据库,引擎导入语句如下:
_ "github.com/go-sql-driver/mysql"
mysql连接配置
-
设置自动同步结构体到数据库 xorm框架的engine数据库引擎,提供了engine.Sync()方法,允许开发者将自定义的结构体同步到数据库中。 随着xorm框架不断更新和迭代,在Sync方法的基础上,又提供了Sync2方法,用于将结构体同步更新到数据库中。Sync2方法主要的特性是:
-
自动检测和创建表
-
自动检测和新增表中的字段名
-
自动检测创建和删除索引
-
自动转换varchar字段类型到text字段类型
-
自动警告字段的默认值
err = engine.Sync2(new(model.Permission), new(model.City), new(model.Admin), new(model.AdminPermission), new(model.User))
如上是Sync2方法的使用方法
-
-
其他设置
-
是否显示SQL语句(开发调试时使用)
engine.ShowSQL(true)
-
设置数据库最大连接数
engine.SetMaxOpenConns(10)
-
设置最大空闲连接数量:默认是2
engine.SetMaxIdleConns(5)
代码:
package main import ( "fmt" _ "github.com/go-sql-driver/mysql" //不能忘记导入 "github.com/go-xorm/xorm" "github.com/go-xorm/core" ) func main() { //1. 创建数据库引擎对象 engine, err := xorm.NewEngine("mysql", "root:yu271400@/elmcms?charset=utf8") //elmcms数据库名称 if err != nil { panic(err.Error()) } //2. 数据库引擎关闭 defer engine.Close() //数据库引擎设置 engine.ShowSQL(true) //设置显示SQL语句 engine.Logger().SetLevel(core.LOG_DEBUG) //设置日志级别 engine.SetMaxOpenConns(10) //设置最大连接数 //engine.SetMaxIdleConns(2) //设置最大空闲连接数 engine.Sync(new(Person)) //同步到数据库 //查询表的所有数据 session := engine.Table("user") count, err := session.Count() if err != nil { panic(err.Error()) } fmt.Println(count) //使用原生sql语句进行查询 result, err := engine.Query("select * from user") if err != nil { panic(err.Error()) } for key, value := range result { fmt.Println(key, value) } } type Person struct { Age int Name string } func OrmMapping() { }