beego ORM 是一个强大的 Go 语言 ORM 框架。她的灵感主要来自 Django ORM 和 SQLAlchemy。
    目前该框架仍处于开发阶段,可能发生任何导致不兼容的改动。
    已支持数据库驱动:

    以上数据库驱动均通过基本测试,但我们仍需要您的反馈。
    ORM 特性:

    • 支持 Go 的所有类型存储
    • 轻松上手,采用简单的 CRUD 风格
    • 自动 Join 关联表
    • 跨数据库兼容查询
    • 允许直接使用 SQL 查询/映射
    • 严格完整的测试保证 ORM 的稳定与健壮

    安装 ORM:

    1. go get github.com/astaxie/beego/orm

    简单示例:

    1. [mysql]
    2. user=root
    3. pass=root
    4. host=192.168.1.100
    5. port=3306
    6. dbname=demo
    7. max_idle=20
    8. max_conn=20
    1. package db
    2. import (
    3. "fmt"
    4. "github.com/astaxie/beego"
    5. "github.com/astaxie/beego/orm"
    6. _ "github.com/go-sql-driver/mysql"
    7. )
    8. func init() {
    9. orm.RegisterDriver("mysql", orm.DRMySQL)
    10. mysqluser := beego.AppConfig.String("mysql::user")
    11. mysqlpass := beego.AppConfig.String("mysql::pass")
    12. mysqlhost := beego.AppConfig.String("mysql::host")
    13. mysqlport := beego.AppConfig.String("mysql::port")
    14. mysqldbname := beego.AppConfig.String("mysql::dbname")
    15. mysqlulr := fmt.Sprintf("%v:%v@tcp(%v:%v)/%v?charset=utf8", mysqluser, mysqlpass, mysqlhost, mysqlport, mysqldbname)
    16. //设置最大空闲连接
    17. maxIdle, _ := beego.AppConfig.Int("mysql::max_idle")
    18. //设置最大数据库连接 (go >= 1.2)
    19. maxConn, _ := beego.AppConfig.Int("mysql::max_conn")
    20. orm.RegisterDataBase("default", "mysql", mysqlulr, maxIdle, maxConn)
    21. }
    1. package models
    2. import (
    3. _ "zhsq_go/user_center/db"
    4. "github.com/astaxie/beego/orm"
    5. )
    6. // LoginParam 登录参数
    7. type LoginParam struct {
    8. CompanyId int64 `json:"companyId"`
    9. LoginName string `json:"loginName"`
    10. Password string `json:"password"`
    11. }
    12. type QueryLoginData struct {
    13. Id int64 `orm:"auto"`
    14. UserId string `orm:"column(user_id)"`
    15. }
    16. func init() {
    17. orm.RegisterModel(new(QueryLoginData))
    18. }
    19. // Login 登录系统
    20. func Login(params *LoginParam) (bool, string) {
    21. // 执行登录sql
    22. var data QueryLoginData
    23. sql := `SELECT
    24. user_id
    25. FROM
    26. sys_user t
    27. WHERE t.CompanyId = ?
    28. AND t.login_name = ?
    29. AND t.password = ?`
    30. o := orm.NewOrm()
    31. error := o.Raw(sql, params.CompanyId, params.LoginName, params.Password).QueryRow(&data)
    32. if error != nil { //出现异常
    33. //TODO 记录错误日志
    34. //返回失败结果
    35. return false, ""
    36. } else {
    37. //判断是否查询到数据
    38. if len(data.UserId) == 0 {
    39. return false, ""
    40. } else {
    41. return true, data.UserId
    42. }
    43. }
    44. }