学习GO语言不久,大概2个月左右,在网上找教程练习了很多,觉得想要建立一个无非就是对数据库的增删改查操作,只要掌握了基本操作,那做一个简单的网站是很容易的事情。对新手来说,建议用框架来实现,因为框架写的代码相对简单,代码容易理解,容易上手,好了,下面上代码。

一、目录结构

beego使用mysql数据库 beego 数据库_database

二、 路由router.go

package routers

import (
	"test/controllers"

	"github.com/astaxie/beego"
)

func init() {
	beego.Router("/", &controllers.ORMdemoController{}, "get:ShowOrm")//查询操作
	beego.Router("/insert", &controllers.ORMdemoController{}, "*:Insert")//插入操作
	beego.Router("/Alter", &controllers.ORMdemoController{}, "*:Alter")//修改操作
	beego.Router("/del", &controllers.ORMdemoController{}, "*:Del")//删除操作
	beego.Router("/Query", &controllers.ORMdemoController{}, "*:Query")//查询
}

 三、model.go文件,对结构体、数据库表进行初始化,连接数据库

package models

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

//1.放结构体,表设计
//2.放初始化语句

type Student struct {
	StuId int    `orm:"pk;auto"`  //设置主键自增长 字段名为 id
	Name  string `orm:"size(15)"` //设置长度为15 字段名为 name
	Age   string
	Hobby string `orm:"size(20)"` //设置长度为18 字段名为 idcard

}

func init() {
	//1.注册数据库
	orm.RegisterDataBase("default", "mysql", "root:123456@tcp(127.0.0.1:3306)/test1?charset=utf8")
	//2.注册表
	orm.RegisterModel(new(Student))
	//3.生成表
	orm.RunSyncdb("default", false, true)
}

四、 主体核心程序ormmysql.go 对数据库的增加,删除,查询,修改操作

package controllers

import (
	"test/models"

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

type ORMdemoController struct {
	beego.Controller
}
type RegController struct {
	beego.Controller
}

//查询数据
func (this *ORMdemoController) ShowOrm() {

	//1.获取连接对象
	o := orm.NewOrm()
	//user := models.Users{}
	//err := o.Read(&user)

	//orm查询表所有数据
	var table_lis []models.Student

	_, err := o.QueryTable("Student").All(&table_lis)
	if err != nil {
		beego.Info("查询文章出错")
		return
	}
	beego.Info(table_lis)
	this.Data["table_lis"] = table_lis // 业务逻辑传过来的值
	this.TplName = "index.html"
}

//插入数据
func (this *ORMdemoController) Insert() {
	this.TplName = "index.html"
	var stu models.Student
	//解析数据到结构体
	if error := this.ParseForm(&stu); error != nil {
		this.Data["Tip"] = "数据解析错误"
	} else {

		orm := orm.NewOrm()        //创建新orm对象
		n, err := orm.Insert(&stu) //调用Insert插入数据
		if err == nil && n > 0 {
			//this.Ctx.WriteString("插入成功")
			this.Data["Tip"] = "插入成功"
			//重新查询一遍
			var table_lis []models.Student

			_, err := orm.QueryTable("Student").All(&table_lis)
			if err != nil {
				beego.Info("查询文章出错")
				return
			}
			beego.Info(table_lis)
			this.Data["table_lis"] = table_lis // 业务逻辑传过来的值

		} else {
			this.Data["Tip"] = "插入失败"
		}
	}

}

//查询数据
func (this *ORMdemoController) Query() {

	stuid, _ := this.GetInt("id")
	stu := models.Student{StuId: stuid}
	orm := orm.NewOrm()
	err := orm.Read(&stu) //读取数据
	if err == nil {
		this.Data["StuId"] = stu.StuId
		this.Data["Name"] = stu.Name
		this.Data["Age"] = stu.Age
		this.Data["Hobby"] = stu.Hobby

	} else {
		this.Data["Tip"] = "查询失败"
	}
	this.TplName = "updata.html"
}

//修改数据
func (this *ORMdemoController) Alter() {

	this.TplName = "updata.html"
	var stu models.Student
	if error := this.ParseForm(&stu); error != nil {
		this.Data["Tip"] = "数据解析错误"
	} else {
		orm := orm.NewOrm()
		n, err := orm.Update(&stu)
		if err == nil && n > 0 {
			this.Data["Tip"] = "修改成功"
			//重新查询一遍
			var table_lis []models.Student

			_, err := orm.QueryTable("Student").All(&table_lis)
			if err != nil {
				beego.Info("查询文章出错")
				return
			}
			beego.Info(table_lis)
			this.Data["table_lis"] = table_lis // 业务逻辑传过来的值

			this.TplName = "index.html"
		} else {
			this.Data["Tip"] = "修改失败"
		}
	}
}

//删除数据
func (this *ORMdemoController) Del() {

	this.TplName = "index.html"
	stuid, _ := this.GetInt("id")
	stu := models.Student{StuId: stuid}
	orm := orm.NewOrm()
	n, err := orm.Delete(&stu)
	if n > 0 && err == nil {
		this.Data["Tip"] = "删除成功"
		//重新查询一遍
		var table_lis []models.Student

		_, err := orm.QueryTable("Student").All(&table_lis)
		if err != nil {
			beego.Info("查询文章出错")
			return
		}
		beego.Info(table_lis)
		this.Data["table_lis"] = table_lis // 业务逻辑传过来的值
	} else {
		this.Data["Tip"] = "删除失败"
	}

}

五、用html渲染 输出到前端

beego使用mysql数据库 beego 数据库_数据库_02

六、最终输出效果如下

1、插入数据:

beego使用mysql数据库 beego 数据库_数据库_03

2、修改数据

beego使用mysql数据库 beego 数据库_beego使用mysql数据库_04

beego使用mysql数据库 beego 数据库_数据库_05

3、删除数据

beego使用mysql数据库 beego 数据库_go语言_06