package main
import (
"fmt"
_ "github.com/go-sql-driver/mysql"
"time"
"xorm.io/xorm"
)
func main() {
var (
userName string = "root"
password string = "root"
ipAddress string = "127.0.0.1"
port int = 3306
dbName string = "go_test"
charset string = "utf8mb4"
)
dataSourceName := fmt.Sprintf("%s:%s@tcp(%s:%d)/%s?charset=%s",userName,password,ipAddress,port,dbName,charset)
//engine xorm核心引擎 连接数据库
engine, err := xorm.NewEngine("mysql", dataSourceName)
if err != nil{
fmt.Println("数据库连接失败!",err)
}
//建立结构体 把结构同步到数据库里面
type User struct {
Id int64
Name string
Age int
Passwd string `xorm:"varchar(200)"`
Created time.Time `xorm:"created"` //创建的时候自动同步创建
Updated time.Time `xorm:"updated"` //更新的时候自动同步更新
}
//engine.Sync
err = engine.Sync(new(User))
if err != nil {
fmt.Println("表结构同步失败!")
}
// Query查询 会返回结果集
//返回值是byte
results,err := engine.Query("select * from user")
fmt.Println(results)
//返回值是string
results2,err := engine.QueryString("select * from user")
fmt.Println(results2)
//返回值是interface
results3,err := engine.QueryInterface("select * from user")
fmt.Println(results3)
//Get 获取某一条数据 数据直接保存到user的结构体中
user := User{}
engine.Get(&user)
fmt.Println(user)
//指定条件来查询用户 Name: "lf" 是约束条件
user1 := User{Name: "lf"}
engine.Where("passwd=?",1234).Desc("id").Get(&user1)
fmt.Println(user1)
//获取指定字段值 此时只打印name = 3
var name string
engine.Table(&user).Where("id = ?", 4).Cols("name").Get(&name)
fmt.Println(name)
var users []User
//limit start 可以设置分页 查询多个使用find
engine.Where("passwd=1234").And("age=22").Limit(10,0).Find(&users)
fmt.Println(users)
//Count 获取记录条数
user = User{Passwd: "1234"}
count,err := engine.Count(&user)
fmt.Println(count)
//Iterate 和 Rows 根据条件遍历数据
engine.Iterate(&User{Passwd: "1234"}, func(idx int, bean interface{}) error {
users := bean.(*User)
fmt.Println(users)
return nil
})
fmt.Println("==================")
rows,err := engine.Rows(&User{Passwd: "1234"})
defer rows.Close()
userBean := new(User) //scan需要一个指针 通过new一个结构体来实现
for rows.Next(){ //bool类型
rows.Scan(userBean) //保存到user里面
fmt.Println(userBean)
}
}
xorm解决翻页问题
最新推荐文章于 2023-07-12 16:27:51 发布