當(dāng)前位置:
首頁 >
xorm2
發(fā)布時(shí)間:2024/3/24
36
豆豆
安裝
go get xorm.io/xorm連接數(shù)據(jù)庫(kù),創(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ù)庫(kù)連接成功")}定義一個(gè)和表同步的結(jié)構(gòu)體,并且自動(dòng)同步結(jié)構(gòu)體到數(shù)據(jù)庫(kù)
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("表結(jié)構(gòu)同步失敗")} else {fmt.Println("表結(jié)構(gòu)同步成功")}數(shù)據(jù)插入
//engine.Insert()插入對(duì)象,返回值,受影響值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)//查詢單個(gè)字段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)}事務(wù)處理
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: "皺起遠(yuǎn)", 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='皺起遠(yuǎn)'"); err != nil {panic(err)}總結(jié)
- 上一篇: [壹加工具]一键模具孔位标注
- 下一篇: 人工智能:声纹识别技术介绍