Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- # go-lang, Revel, MySQL, ORM(gorm)
- ### Installation
- ```bash
- $ go get github.com/jinzhu/gorm
- $ go get github.com/go-sql-driver/mysql
- ```
- ### Add configuration
- ```bash
- $ vim conf/app.conf
- [dev]
- db.user = root
- db.password = ***
- db.host = localhost
- db.port = 3306
- db.name = ***_development
- db.protocol = tcp
- db.args
- ```
- ### Create based controller
- ```go
- $ vim app/controllers/database.go
- package controllers
- import (
- "fmt"
- _ "github.com/go-sql-driver/mysql"
- "github.com/jinzhu/gorm"
- "github.com/revel/revel"
- "log"
- "strings"
- )
- var Db *gorm.DB
- func InitDB() {
- constr := genConStr()
- db, err := gorm.Open("mysql", constr)
- if err != nil {
- log.Panicf("Failed to database connect: %v\n", err)
- }
- db.DB()
- db.AutoMigrate(&models.User{})
- Db = db
- }
- func genConStr() string {
- host := getConfigString("db.host", "")
- port := getConfigString("db.port", "")
- user := getConfigString("db.user", "")
- pass := getConfigString("db.pass", "")
- name := getConfigString("db.name", "")
- prot := getConfigString("db.prot", "")
- args := getConfigString("db.args", "")
- if strings.Trim(args, " ") != "" {
- args = "?" + args
- } else {
- args = ""
- }
- return fmt.Sprintf("%s:%s@%s([%s]:%s)/%s%s",
- user, pass, prot, host, port, name, args)
- }
- func getConfigString(param string, defval string) string {
- value, found := revel.Config.String(param)
- if !found {
- if defval == "" {
- log.Panicf("Not found config parameter: %s\n", param)
- }
- return defval
- }
- return value
- }
- ```
- ### Initializer
- ```go
- % vim app/init.go
- import (
- "{APP_PATH}/app/controllers"
- )
- func init() {
- revel.OnAppStart(controllers.InitDB)
- }
- ```
- ### Create models
- ```go
- % vim app/models/user.go
- package models
- type User struct {
- Id int64
- Name string
- Age int32
- }
- ```
- ### Usage from controller
- ```go
- % vim app/controllers/my_controller.go
- import (
- "{APP_PATH}/app/models"
- "github.com/revel/revel"
- )
- type MyController struct {
- *revel.Controller
- }
- func (c MyController) Index() revel.Result {
- user := &models.User{Name: "yukpiz", Age: 68}
- Db.Create(user)
- result := Db.First(&user)
- return c.RenderJson(result)
- }
- ```
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement