上周学完了 GoLang 基础部分知识,这周学习下 beego 框架.
这篇文章记录了 ORM 部分知识
连接数据库
在包名 dao 下创建 mysql.go
package dao
import (
"github.com/astaxie/beego/orm"
_ "github.com/go-sql-driver/mysql"
)
func init() {
orm.RegisterDriver("mysql", orm.DRMySQL)
orm.RegisterDataBase("default", "mysql", "user:pass@tcp(185.207.153.189:3306)/tempyun")
//参数3按照官网参数连接不上mysql
// orm.RegisterDataBase("default", "mysql", "root:root@/orm_test?charset=utf8")
}
func Getcon() orm.Ormer {
return orm.NewOrm()
}
model
type User struct {
Username string `orm:"pk"`
Password string
Email string
Headurl string
}
如果表的主键不是 id,那么需要加上 pk 注释,显式的说这个字段是主键
属性名首字母大写
第二个单词首字母不能大写,如要大写将对应 如 HeadUrl 对应表字段 Head_url
查询
func Ut() {
var o=dao.Getcon()
var users []models.User
//原始sql
num, err := o.Raw("SELECT * FROM user").QueryRows(&users)
if err == nil {
fmt.Println("user nums: ", num)
fmt.Println(users[0])
}
//根据主键
user := models.User{Username: "danbai"}
err = o.Read(&user)
if err == orm.ErrNoRows {
fmt.Println("查询不到")
} else if err == orm.ErrMissPK {
fmt.Println("找不到主键")
} else {
fmt.Println(user.Password)
}
}
插入更新
func Ut1() {
var o=dao.Getcon()
var user = models.User{"test","123","225@qq.com","https://www.123.com"}
username, err := o.Insert(&user)
if err == nil {
fmt.Println(username)
}
user1 := models.User{Username: "test"}
if o.Read(&user1) == nil {
user1.Password = "pass"
if num, err := o.Update(&user1); err == nil {
fmt.Println(num)
}
}
}
总结
今天大概看了遍文档 和 spring 框架还是有点区别,但是内容都差不多路由、控制、服务、视图、过滤器等.
简单练习了下,发现启动速度也很快.占用内存比 java 少了不少.
接下来就开始边做边学了,加油!
欢迎来到这里!
我们正在构建一个小众社区,大家在这里相互信任,以平等 • 自由 • 奔放的价值观进行分享交流。最终,希望大家能够找到与自己志同道合的伙伴,共同成长。
注册 关于