- 在beego的conf中添加數據庫連接配置
# pg數據庫配置
#連接數據庫賬號
pg_user = "postgres"
#連接數據庫密碼
pg_password = "123456"
#連接數據庫的ip
pg_host = "127.0.0.1"
#數據庫的端口
pg_port = "5432"
#連接的數據庫名
pg_db = "RecruitStudents"
#設置最大打開的連接數,默認值爲0表示不限制
pg_max_open_conns = 1000
#用於設置閒置的連接數。
pg_max_idle_conns = 20
2.要連接到數據庫首先要導入驅動程序。
import _ "github.com/jinzhu/gorm/dialects/postgres"
3.在models中連接pg數據庫
package models
import (
"github.com/astaxie/beego"
"time"
"github.com/jinzhu/gorm"
_"github.com/jinzhu/gorm/dialects/postgres"
//"time"
)
//聲明orm.Ormer 全局使用
var (Db *gorm.DB)
type Photo struct {
Id int `gorm:"column:id"` // ID字段映射
XueHao string
PhotoURL string
Leixing string
is_del int
memo string
}
func (u *Photo) TableName() string { //表名映射
return "photo"
}
func init() {
var err error
var pg_user = beego.AppConfig.String("pg_user")
var pg_password = beego.AppConfig.String("pg_password")
var pg_host = beego.AppConfig.String("pg_host")
//var pg_port =beego.AppConfig.String("pg_port")
var pg_db = beego.AppConfig.String("pg_db")
var pg_max_open_conns = beego.AppConfig.DefaultInt("pg_max_open_conns",1000)
var pg_max_idle_conns = beego.AppConfig.DefaultInt("pg_max_idle_conns",20)
var dataBaseUrl="host="+pg_host+" user="+pg_user+" dbname="+pg_db+" sslmode=disable password="+pg_password
db, err := gorm.Open("postgres", dataBaseUrl)
if err != nil {
panic(err)
}
db.DB().SetMaxIdleConns(pg_max_idle_conns) //配置連接池
db.DB().SetMaxOpenConns(pg_max_open_conns)
if beego.AppConfig.String("runmode") == "dev" {//如果運行在dev 模式下 則打印sql語句
db.LogMode(true) //調試模式
}
Db=db.New()
}
3 .controllers中使用Gorm
注意:在controllers中 可以使用models.Db的方式獲取數據庫的連接
package login
import (
"../../models"
"fmt"
"github.com/astaxie/beego"
"github.com/jinzhu/gorm"
)
type LoginMainController struct {
beego.Controller
}
//返回JSON格式 結構體
type JSONStruct struct {
Code int
Msg string
}
func (c *LoginMainController) Login() {
//獲取登錄用戶名及密碼
name := c.GetString("name")
pwd := c.GetString("pwd")
//打印 驗證
fmt.Println(name)
fmt.Println(pwd)
//在models.go 裏面查詢數據庫 , T_manager是表名字 ,賦值給u
u := models.T_manager{}
//指定查詢對象值 即在查詢Man_user字段中查詢name的值
//查詢
err:=models.Db.Where("man_user = ?",name).First(&u).Error
//定義返回JSON數據序列
var mystruct=&JSONStruct{}
//判斷如果查詢不到err返回用戶不存在
if err == gorm.ErrRecordNotFound{
fmt.Printf("用戶不存在")
//返回 用戶名不存在 並返回json數據
mystruct = &JSONStruct{40001, "用戶不存在",}
}else {
if pwd==u.Man_password{
fmt.Printf("成功")
//成功
mystruct = &JSONStruct{0, "成功"}
} else {
//密碼錯誤
fmt.Printf("密碼錯誤")
mystruct = &JSONStruct{40002, "密碼錯誤"}
}
}
//beego.controller.ServeJSON()
//通過把要輸出的數據放到Data[“json”]中,然後調用ServeJSON()進行渲染,就可以把數據進行JSON序列化輸出
c.Data["json"] = mystruct
c.ServeJSON()
}