gorose使用示例

package main

import (
	"fmt"
	"github.com/gohouse/gorose"         //import Gorose
	_ "github.com/go-sql-driver/mysql"     //只執行github.com/go-sql-driver/mysql的init函數
	"errors"
	"strconv"                    
)

func main() {
        //mysql數據庫配置
	var DbConfig = map[string]interface{}{
		// Default database configuration
		"Default": "mysql_dev",
		// (Connection pool) Max open connections, default value 0 means unlimit.
		"SetMaxOpenConns": 0,
		// (Connection pool) Max idle connections, default value is 1.
		"SetMaxIdleConns": 10,

		// Define the database configuration character "mysql_dev".
		"Connections": map[string]map[string]string{
			"mysql_dev": {// 定義名爲 mysql_dev 的數據庫配置
				"host": "192.168.2.179",       // 數據庫地址
				"username": "a",         // 數據庫用戶名
				"password": "b@", // 數據庫密碼
				"port": "3306",                // 端口
				"database": "a",      // 連接的數據庫名字
				"charset": "utf8",             // 字符集
				"protocol": "tcp",             // 連接協議
				"prefix": "",                  // 表前綴
				"driver": "mysql",             // 數據庫驅動(mysql,sqlite,postgres,oracle,mssql)
			},
		},
	}

	db, err := gorose.Open(DbConfig)
	if err != nil {
		panic(err.Error())
	}
	defer db.Close()            //延遲關閉
        
        // 簡單查詢
	res, err := db.Query("select * from users;")
	fmt.Println(res)
            
        // 條件查詢
	res, err = db.Query("select * from users where userid=?",1)
	fmt.Println(res)

        //簡單鏈式查詢
	fmt.Println(db.Table("users").First())

        //帶條件的鏈式查詢
	fmt.Println(db.Table("users").Fields("userid as id ,username as name").Where("userid", "=", 3).Get())
        
        //帶別名的查詢
        res, err := db.Table("users").Fields("userid as ID,username as Name").Get()

        // 查詢結果轉成json
	res,err = db.Table("users").Fields("userid as id ,username as name").Where("userid", "=", 3).Get()
	jsonStr := db.JsonEncode(res)
	fmt.Println(jsonStr)

	//開啓事務,參數是一個匿名函數
	db.Transaction(func() error {
                // 鏈式插入數據
		res1 ,err1 := db.Table("version").Data(map[string]interface{}{"MainVersion":1,"SubVersion":2}).Insert(true)
		if err1 != nil {
			return err1
		}
		if res1 == 0 {
			return errors.New("Insert failed")
		}

                //鏈式 更新數據
		res1,err1 = db.Table("scene").Data(map[string]interface{}{"modelname":"model003"}).Where("id",10).Update()
		if err1 != nil {
			return err1
		}
		if res1 == 0 {
			return errors.New("Update failed")
		}
		return nil
	})

        // 事務結束
}
相關文章
相關標籤/搜索