golang: beego 框架ORM 之CRUD操作

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接: https://blog.csdn.net/textdemo123/article/details/102741685

背景 :
可以使用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
总结一句就是两个大写字母之间要有一个下划线

猜你喜欢

转载自blog.csdn.net/textdemo123/article/details/102741685