当前位置: 移动技术网 > IT编程>脚本编程>Go语言 > xorm-Iterate/Count/Rows方法实例

xorm-Iterate/Count/Rows方法实例

2019年05月29日  | 移动技术网IT编程  | 我要评论
  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"`
     money     int       `xorm:" 'money' "`
     age       int       `xorm:"age"`
     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, 3)
        u[0].name = "u0"
        u[0].money = 1
        u[0].age = 1
        u[1].name = "u1"
        u[1].money = 2
        u[1].age = 1
        u[2].name = "u2"
        u[2].money = 3
        u[2].age = 1
  
        _, err = engine.insert(u)
        if err != nil {
           log.fatal(err)
           return
        }*/
  
     /*
        iterate方法提供逐条执行查询到的记录的方法,他所能使用的条件和find方法完全相同
        err := engine.where("age > ? or name=?)", 30, "xlw").iterate(new(userinfo), func(i int, bean interface{})error{
           user := bean.(*userinfo)
           //do somthing use i and user
        })*/
  
     err = engine.where("id>?", 0).iterate(new(user), func(i int, bean interface{}) error {
        user := bean.(*user)
        fmt.println("iterate方法所有id>0的人的名字为:", user.name)
        return err
     })
  
     /* func(i int, bean interface{}) error {
           user := bean.(*user)
           fmt.println("iterate方法所有id>0的人的名字为:", user.name)
           return err
        }
     是iterate的第二个参数,是一个匿名函数
  
  
     func (session *session) iterate(bean interface{}, fun iterfunc) error
     type iterfunc func(idx int, bean interface{}) error 定义了一类第一个参数是int,第二个参数是任意类型,返回值是error的函数
     */
  
  
  
  /* count方法
     统计数据使用count方法,count方法的参数为struct的指针并且成为查询条件。
     user := new(user)
     total, err := engine.where("id >?", 1).count(user)
  */
  
     u1 := new(user)
     total, err := engine.where("id >?", 1).count(u1)
     if err != nil {
        log.fatal(err)
        return
     }
     fmt.println("count方法,所有id>1的人总数为:", total)
  
     /*
        rows方法和iterate方法类似,提供逐条执行查询到的记录的方法,不过rows更加灵活好用。
        user := new(user)
        rows, err := engine.where("id >?", 1).rows(user)
        if err != nil {
        }
        defer rows.close()
        for rows.next() {
           err = rows.scan(user)
           //...
        }
     */
  
     u2 := new(user)
     rows, err := engine.where("id >?", 1).rows(u2)
     if err != nil {
        log.fatal(err)
        return
     }
     defer rows.close()
     for rows.next() {
        err = rows.scan(u2)
        fmt.println("rows方法,所有id>1的人的名字为:", u2.name)
     }
  }
  
  /*输出:
  iterate方法所有id>0的人的名字为: u0
  iterate方法所有id>0的人的名字为: u1
  iterate方法所有id>0的人的名字为: u2
  count方法,所有id>1的人总数为: 2
  rows方法,所有id>1的人的名字为: u1
  rows方法,所有id>1的人的名字为: u2
  
  */
  • id

如对本文有疑问, 点击进行留言回复!!

相关文章:

验证码:
移动技术网