xorm -Get方法实例

  • 查询单条数据使用Get方法,在调用Get方法时需要传入一个对应结构体的指针,同时结构体中的非空field自动成为查询的条件和前面的方法条件组合在一起查询

    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) 根据Id来获得单条数据:*/
    
    	fmt.Println("=============id()==================")
    	uu := new(User)
    	has, err := engine.Id(1).Get(uu)
    	if err != nil {
    		log.Fatal(err)
    		return
    	}
    	if has {
    		fmt.Println(uu.Name)
    	}
    
    	/*	2) 根据Where来获得单条数据*/
    
    	fmt.Println("=============where()==================")
    	has, err = engine.Where("id =?",1).Get(uu)
    	if err != nil {
    		log.Fatal(err)
    		return
    	}
    	if has {
    		fmt.Println(uu.Name)
    	}
    
    
    	/*3) 根据user结构体中已有的非空数据来获得单条数据
    	返回的结果为两个参数,一个has为该条记录是否存在,第二个参数err为是否有错误。不管err是否为nil,has都有可能为true或者false。
    	*/
    	fmt.Println("===============user结构体中已有的非空数据================")
    	uu = &User{Id:1}
    	has, err = engine.Get(uu)
    	if err != nil {
    		log.Fatal(err)
    		return
    	}
    	if has {
    		fmt.Println(uu.Name)
    	}
    }
    

/*
输出:
=id()======
abcd
=where()======
abcd
=user结构体中已有的非空数据==
abcd
*/

posted on 2019-05-26 15:41  j_x_x  阅读(1356)  评论(0编辑  收藏  举报

导航