beego ORM 是一个强大的 Go 语言 ORM 框架。她的灵感主要来自 Django ORM 和 SQLAlchemy。
目前该框架仍处于开发阶段,可能发生任何导致不兼容的改动。
已支持数据库驱动:
- MySQL:github.com/go-sql-driver/mysql
- PostgreSQL:github.com/lib/pq
- Sqlite3:github.com/mattn/go-sqlite3
以上数据库驱动均通过基本测试,但我们仍需要您的反馈。
ORM 特性:
- 支持 Go 的所有类型存储
- 轻松上手,采用简单的 CRUD 风格
- 自动 Join 关联表
- 跨数据库兼容查询
- 允许直接使用 SQL 查询/映射
- 严格完整的测试保证 ORM 的稳定与健壮
安装 ORM:
go get github.com/astaxie/beego/orm
简单示例:
[mysql]user=rootpass=roothost=192.168.1.100port=3306dbname=demomax_idle=20max_conn=20
package dbimport ("fmt""github.com/astaxie/beego""github.com/astaxie/beego/orm"_ "github.com/go-sql-driver/mysql")func init() {orm.RegisterDriver("mysql", orm.DRMySQL)mysqluser := beego.AppConfig.String("mysql::user")mysqlpass := beego.AppConfig.String("mysql::pass")mysqlhost := beego.AppConfig.String("mysql::host")mysqlport := beego.AppConfig.String("mysql::port")mysqldbname := beego.AppConfig.String("mysql::dbname")mysqlulr := fmt.Sprintf("%v:%v@tcp(%v:%v)/%v?charset=utf8", mysqluser, mysqlpass, mysqlhost, mysqlport, mysqldbname)//设置最大空闲连接maxIdle, _ := beego.AppConfig.Int("mysql::max_idle")//设置最大数据库连接 (go >= 1.2)maxConn, _ := beego.AppConfig.Int("mysql::max_conn")orm.RegisterDataBase("default", "mysql", mysqlulr, maxIdle, maxConn)}
package modelsimport (_ "zhsq_go/user_center/db""github.com/astaxie/beego/orm")// LoginParam 登录参数type LoginParam struct {CompanyId int64 `json:"companyId"`LoginName string `json:"loginName"`Password string `json:"password"`}type QueryLoginData struct {Id int64 `orm:"auto"`UserId string `orm:"column(user_id)"`}func init() {orm.RegisterModel(new(QueryLoginData))}// Login 登录系统func Login(params *LoginParam) (bool, string) {// 执行登录sqlvar data QueryLoginDatasql := `SELECTuser_idFROMsys_user tWHERE t.CompanyId = ?AND t.login_name = ?AND t.password = ?`o := orm.NewOrm()error := o.Raw(sql, params.CompanyId, params.LoginName, params.Password).QueryRow(&data)if error != nil { //出现异常//TODO 记录错误日志//返回失败结果return false, ""} else {//判断是否查询到数据if len(data.UserId) == 0 {return false, ""} else {return true, data.UserId}}}
