xorm实例-创建xorm,映射创建xorm引擎
//在xorm⾥⾯,可以同时存在多个Orm引擎,⼀个Orm引擎称为Engine,
//⼀个Engine⼀般只对应⼀个数据库。
//Engine通过调⽤`xorm.NewEngine`⽣成,如:
package main
import (
"fmt"
_ "github/go-sql-driver/mysql"
"github/go-xorm/xorm"
"log"
)
func main() {
var err error
/*[username[:password]@][protocol[(address)]]/dbname[?param1=value1&...¶mN=valueN]*/
//⼀般情况下如果只操作⼀个数据库,只需要创建⼀个engine即可。engine是GoRoutine安全的。
engine, err = xorm.NewEngine("mysql", "root:123456@/test")
if err != nil {
log.Fatal(err)
return
}
//创建完成engine之后,并没有⽴即连接数据库
//此时可以通过engine.Ping()来进⾏数据库的连接测试是否可以连接到数据库。
err = engine.Ping()
if err != nil{
log.Fatal(err)
return
}
//[xorm] [info] 2019/05/25 13:50:04.228243 PING DATABASE mysql
名称映射规则
职责
结构体名称---------------------------表名
结构体field---------------------------表字段的名称
由core.IMapper接⼝的实现者来管理,xorm内置了三种IMapper实现
core.SnakeMapper
⽀持struct为驼峰式命名,表结构为下划线命名之间的转换
Core.SameMapper
⽀持结构体名称和对应的表名称以及结构体field名称与对应的表字段名称相同的命名
core.GonicMapper
SnakeMapper很类似,但是对于特定词⽀持更好,⽐如ID会翻译成id⽽不是i_d。
当前SnakeMapper为默认值,如果需要改变时,在engine创建完成后使⽤
engine.SetMapper(core.SameMapper{})
如果你使⽤了别的命名规则映射⽅案,也可以⾃⼰实现⼀个IMapper。
表名称和字段名称的映射规则默认是相同的,当然也可以设置为不同,如:
engine.SetTableMapper(core.SameMapper{})
engine.SetColumnMapper(core.SnakeMapper{})
前缀映射,后缀映射
package main
import (
_ "github/go-sql-driver/mysql"
"github/go-xorm/core"
"github/go-xorm/xorm"
"log"
)
英文合同范本var engine *xorm.Engine
type User struct {
ID int `xorm:"id"`
Name string `xorm:"name"`
Age int `xorm:"age"`
}
type User1 struct {
ID int `xorm:"id"`
Name string `xorm:"name"`
Age int `xorm:"age"`
}
func main() {
var err error
engine, err = xorm.NewEngine("mysql", "root:123456@/test")
if err != nil {
log.Fatal(err)
绝对控制 电影return
}
/*通过 `core.NewPrefixMapper(core.SnakeMapper{}, "prefix")`
可以创建⼀个在SnakeMapper的基础上在命名中添加统⼀的前缀,
也可以把SnakeMapper{}换成SameMapper或者你⾃定义的Mapper。*/
//例如,如果希望所有的表名都在结构体⾃动命名的基础上加⼀个前缀⽽字段名不加前缀
//则可以在engine创建完成后执⾏以下语句(只针对新建的表,不能改变之前建⽴的表的前缀): tbMapper := core.NewPrefixMapper(core.SnakeMapper{}, "prefix_")
滴答滴答歌词>耐玩又不氪金的手游2020engine.SetTableMapper(tbMapper)
//执⾏之后,结构体 `type User struct` 默认对应的表名就变成了 `prefix_user` 了
//⽽之前默认的是 `user`
err = engine.CreateTables(User{})give
if err != nil {
log.Fatal(err)
return
}
/* 通过 `core.NewSufffixMapper(core.SnakeMapper{}, "suffix")`
可以创建⼀个在SnakeMapper的基础上在命名中添加统⼀的后缀,
当然也可以把SnakeMapper换成SameMapper或者你⾃定义的Mapper。*/
tMapper := core.NewSuffixMapper(core.SnakeMapper{}, "_suffix")
engine.SetTableMapper(tMapper)
err = engine.CreateTables(User1{})
if err != nil {
log.Fatal(err)
return
}
中秋节300字作文以上}
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论