设为首页 加入收藏

TOP

xorm -Find方法实例(一)
2019-05-27 20:12:34 】 浏览:45
Tags:xorm -Find 方法 实例

查询多条数据使用Find方法,Find方法的第一个参数为slice的指针或Map指针,即为查询后返回的结果,第二个参数可选,为查询的条件struct的指针。

package main

import (
    "fmt"
    _ "github.com/go-sql-driver/mysql"
    "github.com/go-xorm/xorm"
    "log"
    "time"
)

var engine *xorm.Engine

type User struct {
    Name      string    `xorm:"varchar(25) 'name'"`
    Id        int       `xorm:"pk 'id' autoincr"`
    CreatedAt time.Time `xorm:"created"`
}

func main() {
    var err error
    engine, err = xorm.NewEngine("mysql", "root:123456@/test")
    if err != nil {
        log.Fatal(err)
        return
    }

    err = engine.CreateTables(User{})
    if err != nil {
        log.Fatal(err)
        return
    }
//下面插入语句第一次运行程序时运行,后面注释掉
  /*
    u := make([]User, 5)
    u[0].Name = "abcd"
    u[1].Name = "acbd"
    u[2].Name = "dbac"
    u[3].Name = "cbda"
    u[4].Name = "bdca"

    _, err = engine.Insert(u)
    if err != nil {
        log.Fatal(err)
        return
    }
*/


/*  1) 传入Slice用于返回数据
    everyone := make([]Userinfo, 0)
    err := engine.Find(&everyone)

    pEveryOne := make([]*Userinfo, 0)
    err := engine.Find(&pEveryOne)*/

    users := make([]User,0)
    err = engine.Find(&users)
    if err != nil {
        log.Fatal(err)
        return
    }

    for i,u := range users{
        fmt.Println("只传第一个参数,传入slice用于返回数据,index:",i,"user",u.Name)
    }
    fmt.Println()


    users1 := make([]User,0)
    err = engine.Find(&users1)
    if err != nil {
        log.Fatal(err)
        return
    }

    for i,u := range users1{
        fmt.Println("只传第一参数,传入slice用于返回数据,index:",i,
		    

"user",u.Name) } fmt.Println() users2 := make([]User,0) s2 := new(User) s2.Name ="abcd" err = engine.Find(&users2,s2) if err != nil { log.Fatal(err) return } for i,u := range users2{ fmt.Println("传两个参数,传入slice用于返回数据,index:",i,"user",u.Name) } fmt.Println() users3 := make([]User,0) s3 := new(User) s3.Name ="abcd" err = engine.Find(&users3,s3) if err != nil { log.Fatal(err) return } for i,u := range users3{ fmt.Println("只传第一参数,传入slice用于返回数据,index:",i,"user",u.Name) } fmt.Println() fmt.Println() /*2) 传入Map用户返回数据,map必须为map[int64]Userinfo的形式,map的key为id,因此对于复合主键无法使用这种方式。 users := make(map[int64]Userinfo) err := engine.Find(&users) pUsers := make(map[int64]*Userinfo) err := engine.Find(&pUsers)*/ users4 := make(map[int64]User,0) err = engine.Find(&users4) if err != nil { log.Fatal(err) return } for i,u := range users4{ fmt.Println("只传第一个参数,传入map用于返回数据,index:",i,"user",u.Name) } fmt.Println() users5 := make(map[int64]User,0) s5 := new(User) s5.Name ="abcd" err = engine.Find(&users5,s5) if err != nil { log.Fatal(err) return } for i,u := range users5{ fmt.Println("传两个参数,传入map用于返回数据,index:",i,"user",u.Name) } fmt.Println() fmt.Println() /* 3) 也可以加入各种条件 users := make([]Userinfo, 0) err := engine.Where("age > ? or name = ?", 30, "xlw").Limit(20, 10).Find(&users) */ users6 := make(map[int64]User,0) err = engine.Where("name > ?","baaa").Find(&users6) if err != nil { log.Fatal(err) return } for i,u := range users6{ fmt.Println("只传第一个参数,传入map用于返回数据,index:",i,"user",u.Name
编程开发网
首页 上一页 1 2 下一页 尾页 1/2/2
】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
上一篇golang隐藏/显示window系统下的黑.. 下一篇xorm -Alias,Asc,Desc方法实例

评论

帐  号: 密码: (新用户注册)
验 证 码:
表  情:
内  容:

array(4) { ["type"]=> int(8) ["message"]=> string(24) "Undefined variable: jobs" ["file"]=> string(32) "/mnt/wp/cppentry/do/bencandy.php" ["line"]=> int(217) }