首页 / GO / golang xorm应用
golang xorm应用
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了golang xorm应用,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含1954字,纯文字阅读大概需要3分钟。
内容图文
github.com/go-xorm/xorm xorm库
xorm是一个简单而强大的Go语言ORM库. 通过它可以使数据库操作非常简便。xorm的目标并不是让你完全不去学习SQL,我们认为SQL并不会为ORM所替代,但是ORM将可以解决绝大部分的简单SQL需求。
在xorm里面,可以同时存在多个Orm引擎,一个Orm引擎称为Engine,一个Engine一般只对应一个数据库。Engine通过调用xorm.NewEngine
生成,如:
var engine *xorm.Engine
在使用前,记得导入需要的包
import (
_ "github.com/go-sql-driver/mysql"
"github.com/go-xorm/xorm"
)
创建完成engine之后,并没有立即连接数据库,此时可以通过engine.Ping()来进行数据库的连接测试是否可以连接到数据库。另外对于某些数据库有连接超时设置的,可以通过起一个定期Ping的Go程来保持连接鲜活。
engine可以通过engine.Close来手动关闭,但是一般情况下可以不用关闭,在程序退出时会自动关闭。
如果是go-sql-driver,执行exec()也会自动关闭,但是执行Query()则需要关闭。
日志
xorm的日志比使用go-sql-driver要好用,总体来说xorm是现有的orm中值得一用的一个。
日志是一个接口,通过设置日志,可以显示SQL,警告以及错误等,默认的显示级别为INFO。
-
engine.ShowSQL(true)
,则会在控制台打印出生成的SQL语句; -
engine.Logger().SetLevel(core.LOG_DEBUG)
,则会在控制台打印调试及以上的信息;
如果希望将信息不仅打印到控制台,而是保存为文件,那么可以通过类似如下的代码实现,NewSimpleLogger(w io.Writer)
接收一个io.Writer接口来将数据写入到对应的设施中。
当然,如果希望将日志记录到syslog中,也可以如下:
logWriter, err := syslog.New(syslog.LOG_DEBUG, "rest-xorm-example")
if err != nil {
log.Fatalf("Fail to create xorm system logger: %v\n", err)
}
logger := xorm.NewSimpleLogger(logWriter)
logger.ShowSQL(true)
engine.SetLogger(logger)
连接池
engine内部支持连接池接口和对应的函数。
ps:go-sql-driver 内部也支持连接池。
- 如果需要设置连接池的空闲数大小,可以使用
engine.SetMaxIdleConns()
来实现。 - 如果需要设置最大打开连接数,则可以使用
engine.SetMaxOpenConns()
来实现。
最后,举一个xorm的使用例子
var users []User err := engine.Where("name = ?", name).And("age > 10").Limit(10, 0).Find(&users) // SELECT * FROM user WHERE name = ? AND age > 10 limit 0 offset 10 type Detail struct { Id int64 UserId int64 `xorm:"index"` } type UserDetail struct { User `xorm:"extends"` Detail `xorm:"extends"` } var users []UserDetail err := engine.Table("user").Select("user.*, detail.*") Join("INNER", "detail", "detail.user_id = user.id"). Where("user.name = ?", name).Limit(10, 0). Find(&users) // SELECT user.*, detail.* FROM user INNER JOIN detail WHERE user.name = ? limit 0 offset 10
原文:http://www.cnblogs.com/DaBing0806/p/6680748.html
内容总结
以上是互联网集市为您收集整理的golang xorm应用全部内容,希望文章能够帮你解决golang xorm应用所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。