设为首页 加入收藏

TOP

xorm-Iterate/Count/Rows方法实例
2019-05-28 12:08:10 】 浏览:31
Tags:xorm-Iterate/Count/Rows 方法 实例
  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)
           fm
		    

t.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

编程开发网
】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
上一篇golang两种在for循环中使用gorout.. 下一篇xorm -sum 系列方法实例

评论

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

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