Golang实战项目-B2C电商平台

Posted 旧时星空

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Golang实战项目-B2C电商平台相关的知识,希望对你有一定的参考价值。

Golang实战项目-B2C电商平台(1)

     ###                      --完成商品管理模块和CMS(内容管理模块)
  • 技术选型
    • mysql
    • Golang
    • EasyUI
    • Kindeditor
  • 使用MVC开发模式
    • Model:模型层
    • View:视图层
    • Controller:控制器层

项目搭建

  • 新建项目:ego,在Goland中修改GOROOT为当前项目路径(不修改无法build)
  • 项目结构如下:
--ego
	--src 						所有go源码
		--user					业务模块包,user自定义名称,表示业务
			--User.go			编写结构体,当作实体
			--UserDao.go		数据访问
			--UserService.go	 业务逻辑
			--UserController.go	 控制器
	--static 					所有静态文件
		--js 					脚本
		--css 					样式表
		--images 				图片
	--view 						页面
	--main.go 					程序入口
  • 编写main.go,显示login.html页面
ckage main

import (
	"net/http"
	"html/template"
)

func welcome(w http.ResponseWriter, r *http.Request) {
	t, _ := template.ParseFiles("view/login.html")
	t.Execute(w, nil)
}

func main() {
	s := http.Server{Addr: ":80"}
	http.Handle("/static/", http.StripPrefix("/static/", http.FileServer(http.Dir("static"))))
	http.HandleFunc("/", welcome)
	s.ListenAndServe()
  • 在浏览器输入http://localhost测试登陆页面是否显示正常

Commons的编写

  • Commons中内容是所有模块都可能使用的内容
  • 在Commons中提供EgoRetful.go文件,表示前后台交互数据模板,文件内容如下
//前后台数据交互模版
type EgoResult struct {
	Status int//表示状态
	Data   interface{}//数据
	Msg    string//信息

Dml表示增加,删除,修改,而Dql表示查询,需要手动关闭,可以对外提供访问权限。

age commons

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

//数据库操作的三个对象
var (
	db   *sql.DB
	stmt *sql.Stmt
	rows *sql.Rows
)

//打开数据库连接,不要忘记导入驱动包
func openConn()(err error){
	//此处为等号,否则创建局部变量
	db,err=sql.Open("mysql","root:smallming@tcp(localhost:3306)/ego")
	if err!=nil{
		fmt.Println("连接失败",err)
		return
	}
	return nil
}

//关闭连接,首字母大写,需要跨包访问的
func CloseConn(){
	if rows!=nil{
		rows.Close()
	}
	if stmt!=nil{
		stmt.Close()
	}
	if db!=nil{
		db.Close()
	}
}

//执行DML新增,删除,修改操作
func Dml(sql string ,args ... interface{}) (int64,error){
	err:=openConn()
	if err!=nil{
		fmt.Println("执行DML时出现错误,打开连接失败")
		return 0,err
	}
	//此处也是等号
	stmt,err=db.Prepare(sql)
	if err!=nil{
		fmt.Println("执行DML时出现错误,预处理出现错误")
		return 0,err
	}
	//此处要有...表示切片,如果没有表示数组,会报错
	result,err:=stmt.Exec(args...)
	if err!=nil{
		fmt.Println("执行DML出现错误,执行错误")
		return 0,err
	}
	count,err:=result.RowsAffected()
	if err!=nil{
		fmt.Println("执行DML出现错误,获取受影响行数错误")
		return 0,err
	}
	CloseConn()//关闭连接
	return count,err
}


//执行DQL查询
func Dql(sql string,args ... interface{}) (*sql.Rows,error){
	err:= openConn()
	if err!=nil{
		fmt.Println("执行DQL出现错误,打开连接失败")
		return nil,err
	}
	//此处是等号
	stmt,err=db.Prepare(sql)
	if err!=nil{
		fmt.Println("执行DQL出现错误,预处理实现")
		return nil,err
	}
	//此处参数是切片
	rows,err=stmt.Query(args...)
	if err!=nil{
		fmt.Println("执行DQL出现错误,执行错误")
		return nil,err
	}
	//此处没有关闭,调用此函数要记得关闭连接
	return rows,nil
}

以上是关于Golang实战项目-B2C电商平台的主要内容,如果未能解决你的问题,请参考以下文章

Golang实战项目-B2C电商平台

Golang实战项目-B2C电商平台项目

Golang实战项目-B2C电商平台项目

Golang实战项目-B2C电商平台项目

Golang实战项目-B2C电商平台项目

Golang实战项目-B2C电商平台