欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

xorm -Get方法实例

程序员文章站 2022-07-08 20:50:34
查询单条数据使用Get方法,在调用Get方法时需要传入一个对应结构体的指针,同时结构体中的非空field自动成为查询的条件和前面的方法条件组合在一起查询 go package main import ( "fmt" _ "github.com/go sql driver/mysql" "github ......
  • 查询单条数据使用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
    */