日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

xorm2

發(fā)布時間:2024/3/24 编程问答 25 豆豆
生活随笔 收集整理的這篇文章主要介紹了 xorm2 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

安裝

go get xorm.io/xorm

連接數(shù)據(jù)庫,創(chuàng)建引擎

var (userName string = "root"passWord string = "123456"idAddress string = "127.0.0.1"port string = "3306"dbName string = "go_text"charset string = "utf8")dataSourceName := fmt.Sprintf("%s:%s@tcp(%s:%s)/%s?charset=%s", userName, passWord, idAddress, port, dbName, charset)engine, err := xorm.NewEngine("mysql", dataSourceName)if err != nil {fmt.Println("連接失敗")} else {fmt.Println("數(shù)據(jù)庫連接成功")}

定義一個和表同步的結構體,并且自動同步結構體到數(shù)據(jù)庫

type User struct {Id int64Name stringAge intPasswd string `xorm:"varchar(200)"`Created time.Time `xorm:"created"`Updated time.Time `xorm:"updated"`}err = engine.Sync(new(User))if err != nil {fmt.Println("表結構同步失敗")} else {fmt.Println("表結構同步成功")}

數(shù)據(jù)插入

//engine.Insert()插入對象,返回值,受影響值user := User{Id: 1001, Name: "打阿偉", Age: 18, Passwd: "123456"}//保證函數(shù)內(nèi)的user和外部的user一樣n, _ := engine.Insert(&user)if n >= 1 {fmt.Println("數(shù)據(jù)插入成功")}var users []Userusers = append(users, User{Id: 1003, Name: "阿偉", Age: 18, Passwd: "123456"})users = append(users, User{Id: 1004, Name: "偉", Age: 18, Passwd: "123456"})n, _ = engine.Insert(&users)if n >= 1 {fmt.Println("插入成功")}

數(shù)據(jù)的更新與刪除

user := User{Name: "周南"}n, _ := engine.ID(1000).Update(&user)if n >= 1 {fmt.Println("更新成功")}user = User{Name: "打阿偉"}n, _ = engine.ID(1001).Delete(&user)fmt.Println(n)rs, err := engine.Exec("update user set age =10 where id =1000")if err != nil {fmt.Println(err)}fmt.Println(rs)

條件查詢和遍歷輸出

//查詢result, err := engine.Query("select*from user")fmt.Println(result)result2, err := engine.QueryString("select*from user")fmt.Println(result2)result3, err := engine.QueryInterface("select*from user")fmt.Println(result3)//GETuser := User{}engine.Get(&user)fmt.Println(user)//指定條件來查user1 := User{Name: "阿偉"}engine.Where("name=?", user1.Name).Desc("id").Get(&user1)fmt.Println(user1)//查詢單個字段var name stringengine.Table(&user).Where("id=1003").Cols("name").Get(&name)fmt.Println(name)//Find 查詢多條數(shù)據(jù)var users []Userengine.Where("passwd=123456").And("age=18").Limit(10, 0).Find(&users)fmt.Println(users)//Count 獲取記錄條數(shù)user = User{Passwd: "123456"}counts, err := engine.Count(&user)fmt.Println(counts)//Iterate和rows根據(jù)條件遍歷數(shù)據(jù)engine.Iterate(&User{Passwd: "123456"}, func(idx int, bean interface{}) error {user := bean.(*User)fmt.Println(user)return nil})rows, err := engine.Rows(&User{Passwd: "123456"})defer rows.Close()userBean := new(User)for rows.Next() {rows.Scan(userBean)fmt.Println(userBean)}

事務處理

session := engine.NewSession()defer session.Close()session.Begin()defer func() {err := recover()if err != nil {fmt.Println(err)fmt.Println("rollback")session.Rollback()} else {session.Commit()}}()user1 := User{Id: 1005, Name: "皺起遠", Age: 18, Passwd: "123456"}if _, err := session.Insert(&user1); err != nil {panic(err)}user2 := User{Name: "朱加祎", Age: 18, Passwd: "123456"}if _, err := session.Where("id=1000").Update(&user2); err != nil {panic(err)}if _, err := session.Exec("delete from user where name='皺起遠'"); err != nil {panic(err)}

總結

以上是生活随笔為你收集整理的xorm2的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。