golang: beego 框架ORM 之CRUD操作

背景 :
可以使用ORM框架操作數據庫
beego框架自帶了 ORM框架
本篇實踐 beego 框架ORM 的CRUD操作
CREATE -READ -UPDATE -DELETE
代碼:
創建一個控制器 moudle.go

package controllers

import (
	"fmt"

	"github.com/astaxie/beego"
	"github.com/astaxie/beego/orm"
	_ "github.com/go-sql-driver/mysql"
)

type UserInfo struct {
	Id       int64
	Username string
	Password string
}

type ModuleController struct {
	beego.Controller
}

//Get is a  function
func (c *ModuleController) Get() {
	//c.Ctx.WriteString("test moudle")
	orm.RegisterDataBase("default", "mysql", "root:123456@tcp(127.0.0.1:3306)/test?charset=utf8", 30)
	orm.RegisterModel(new(UserInfo))
	o := orm.NewOrm()

	user := UserInfo{Username: "zhangsan", Password: "123456"}
	//插入數據
	//id, err := o.Insert(&user)
	//更新數據
	//user.Id = 2
	//user.Username = "lisi"
	//id, err := o.Update(&user)
	//刪除數據
	//user.Id = 3
	//id, err := o.Delete(&user)
	//讀取
	user.Id = 1
	o.Read(&user)
	//c.Ctx.WriteString(fmt.Sprintf("id: %d err: %v", id, err))
	c.Ctx.WriteString(fmt.Sprintf("user_info: %v", user))

}

本地啓動一個docker化安裝的mysql 環境 套接字127.0.0.1:3306 賬戶 root/123456
創建兩個數據庫 default 和 test數據庫

create database  dafault;
create database  test;

創建user_info表結構

create  table  user_info(
    id int(11) auto_increment ,
    username varchar(32),
    password varchar(128),
    primary key(id)
    ) ;

beego的 ORM框架叫 “github.com/astaxie/beego/orm”
同時導入mysql的驅動 ,只需要加載 mysql的 init方法即可。
_ “github.com/go-sql-driver/mysql”
修改route路由 ,加載該控制器對應的 route路由

package routers

import (
	"WEB/controllers"

	"github.com/astaxie/beego"
)

func init() {
	beego.Router("/", &controllers.MainController{})
	beego.Router("/testcontrol", &controllers.TestController{}, "get:Get")
	beego.Router("/testcontrol", &controllers.TestController{}, "post:Post")
	beego.Router("/modulecontrol", &controllers.ModuleController{}, "get:Get")
	beego.Router("/modulecontrol", &controllers.ModuleController{}, "post:Post")
}

環境準備就緒之後 ,重新啓動bee

bee run

瀏覽器訪問127.0.0.1/modulecontrol
可以看到操作的相關信息
在這裏插入圖片描述
查看後臺數據庫,可以看到CRUD之後相關數據的變化
在這裏插入圖片描述
moudle.go中包含了全部的CRUD操作
鏈接數據庫

	orm.RegisterDataBase("default", "mysql", "root:123456@tcp(127.0.0.1:3306)/test?charset=utf8", 30)
	orm.RegisterModel(new(UserInfo))
	o := orm.NewOrm()

create操作

	user := UserInfo{Username: "zhangsan", Password: "123456"}
	//插入數據
	id, err := o.Insert(&user)
	c.Ctx.WriteString(fmt.Sprintf("id: %d err: %v", id, err))

read操作

user := UserInfo{Username: "zhangsan", Password: "123456"}
user.Id = 1
o.Read(&user)
c.Ctx.WriteString(fmt.Sprintf("user_info: %v", user))

update操作

user := UserInfo{Username: "zhangsan", Password: "123456"}
user.Id = 2
user.Username = "lisi"
id, err := o.Update(&user)
c.Ctx.WriteString(fmt.Sprintf("user_info: %v", user))

delete操作

user := UserInfo{Username: "zhangsan", Password: "123456"}
id, err := o.Delete(&user)
c.Ctx.WriteString(fmt.Sprintf("user_info: %v", user))

注意:
有一點需要注意的是 結構體 和 mysql數據表的對應關係 ,有一個默認的規則,示例如下:
UserInfo --> user_info
DBTest --> d_b_test
總結一句就是兩個大寫字母之間要有一個下劃線

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章