使用Beego开发项目以及和SpringBoot的异同

前传

本文笔者使用的goLand做开发
至于go环境的搭建和beego的安装 在这里就不介绍了

配置

打开goLand 首先把这个勾上
在这里插入图片描述

终端执行Bee new beego-hello

完活后可以拿到一个beego生成的架子
大概这样
在这里插入图片描述
废话不多收直接 go build 或者main.go点进去debug,编译完浏览器打开http://localhost:8080
我们Beego的欢迎界面就出现了
在这里插入图片描述

Controller

和SpringBoot不同的是没有@RequestMapping()这种东西,他的路由配置在路由表里也就是Router.go这个文件,给你们看看怎么搞的

在这里插入图片描述
路由表对应到Controllers中的函数 像这样
在这里插入图片描述

响应

那么Json对象的响应格式我们得自己写一下 比如这样
在这里插入图片描述
代码如下

package utils

type JsonResponse struct {
	Data string `json:"data"`
	Status int `json:"status"`
	Message string `json:"message"`
}
func (s *JsonResponse) SetJsonResponse(data string,status int) JsonResponse {
	var response JsonResponse
	if status == 200 {
		response = JsonResponse{Data: data, Status: status, Message: "success"}

	}else {
		response = JsonResponse{Data: data, Status: status, Message: "error"}
	}
	//一般通常指针类型和interface类型可以使用这样的返回值
	return response
}

我写个controller 给大家看看怎么用,大概像下面这样

func (c *HelloController) Get(){
	name := c.GetString("name")
	if name != "" {
		jsonResponse := utils.JsonResponse{}
		name := c.GetString("name")
		//=赋值 :=初始化+赋值
		jsonResponse = jsonResponse.SetJsonResponse(name,200)
		c.Data["json"] = jsonResponse//塞值
	}
	c.ServeJSON()//返回json响应
}

持久层

连接数据库
在这里插入图片描述
代码如下:

package conf

import (
	"database/sql"
	"errors"
	"fmt"
	_ "github.com/go-sql-driver/mysql"
	"strings"
)

//数据库配置
const (
	userName = "root" //user
	password = "root"  //pass
	ip = "127.0.0.1" //ip
	port = "3306" //port
	dbName = "mysql"//数据库名
)
//Db数据库连接池
var DB *sql.DB
var err error

//注意方法名大写,就是public
func InitDB() error {
	//构建连接:"用户名:密码@tcp(IP:端口)/数据库?charset=utf8"
	path := strings.Join([]string{userName, ":", password, "@tcp(",ip, ":", port, ")/", dbName, "?charset=utf8"}, "")

	//打开数据库,前者是驱动名,所以要导入: _ "github.com/go-sql-driver/mysql"
	DB,err = sql.Open("mysql", path)

	if err != nil {
		return errors.New("openConnection error")
	}
	//设置数据库最大连接数
	DB.SetConnMaxLifetime(100)
	//设置上数据库最大闲置连接数
	DB.SetMaxIdleConns(10)
	//验证连接
	if err := DB.Ping(); err != nil{
		fmt.Println("opon database fail")
		return errors.New("opon database fail")
	}
	fmt.Println("connnect success")
	return nil
}

然后重要的来了!
我一般会这么写一个BaseMapper去调用InitDB() 然后把单表的curd写好
在这里插入图片描述
代码:

package dao

import (
	"beego-hello/conf"
	"beego-hello/entity"
	"errors"
	"fmt"
)

func InsertUser(stu entity.Student) error {
	//初始化数据源
	if err :=conf.InitDB() ;err != nil {
		return errors.New("数据源初始化失败")
	}
	//开启事务
	tx, err := conf.DB.Begin()
	if err != nil{
		fmt.Println("tx fail")
		return errors.New("tx fail")
	}
	//准备sql语句
	stmt, err := tx.Prepare("INSERT INTO student (`name`, `age`, `birth`) VALUES (?, ?, ?)")
	if err != nil{
		fmt.Println("Prepare fail")
		return errors.New("Prepare fail")
	}
	//将参数传递到sql语句中并且执行
	res, err := stmt.Exec(stu.Name, stu.Age, stu.Birth)
	if err != nil{
		fmt.Println("Exec fail")
		return errors.New("Exec fail")
	}
	//将事务提交
	tx.Commit()
	//获得上一个插入自增的id
	fmt.Println(res.LastInsertId())
	return nil
}

接下来
在这里插入图片描述

package dao

import (
	"beego-hello/entity"
	"beego-hello/utils"
	"github.com/jinzhu/gorm"
	_ "github.com/jinzhu/gorm/dialects/sqlite"
	"time"
)
type Product struct {
	gorm.Model
	Code string
	Price uint
}
type CreateMapper struct {

}

func (c *CreateMapper)Add(name string,age int) utils.JsonResponse{
	response := utils.JsonResponse{}
	student := entity.Student{}
	student.Name =name
	student.Age = age
	student.Birth =time.Now()
	if err := InsertUser(student); err !=nil {
		response = response.SetJsonResponse("error",500)
	}else {
		response = response.SetJsonResponse("success",200)
	}
	return response
}

测试:
在这里插入图片描述

在这里插入图片描述

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
Spring 是一个开源的轻量级应用框架,它可以用来构建企业级应用。Spring 框架提供了一系列的模块,包括核心容器、数据访问/集成、Web、AOP 、工具和测试等。 Spring MVC 是 Spring 框架中的一部分,是一个基于 MVC(Model-View-Controller)设计模式的 Web 框架,用于开发 Web 应用程序。Spring MVC 框架提供了一个 Model-View-Controller(MVC)体系结构,使 Web 应用程序的开发更加简单和快速。 Spring Boot 是一个用于构建独立应用程序的 Spring 模块,它简化了 Spring 应用程序的配置和部署。Spring Boot 将大量常规任务自动化,使用 Spring Boot 可以快速创建基于 Spring 的生产级应用程序。 它们的区别和异同点如下: 1. Spring 是一个完整的框架,Spring MVC 是其中的一部分,而 Spring Boot 是 Spring 的一个模块。 2. Spring 主要用于构建企业级应用程序,Spring MVC 用于构建 Web 应用程序,Spring Boot 则用于构建独立应用程序。 3. Spring MVC 和 Spring Boot 都是基于 Spring 框架的,因此它们都有许多共同之处,比如都支持依赖注入、AOP 等特性。 4. Spring MVC 和 Spring Boot 都是基于 MVC 设计模式的,但是 Spring Boot 采用了自动配置的方式,简化了开发过程,而 Spring MVC 则需要手动配置。 5. Spring Boot 内置了 Tomcat、Jetty 等 Web 容器,可以直接运行,而 Spring MVC 则需要手动配置 Web 容器。 总之,Spring 是一个完整的框架,Spring MVC 是其中的一部分,用于构建 Web 应用程序,Spring Boot 则是用于构建独立应用程序的模块。它们都有许多共同之处,但是也存在不同之处。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

商朝

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值