xorm-Iterate/Count/Rows方法实例
程序员文章站
2022-07-02 16:29:15
```go package main import ( "fmt" _ "github.com/go sql driver/mysql" "github.com/go xorm/xorm" "log" "time" ) var engine xorm.Engine type User 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"` 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
上一篇: Ajax与JSON的一些学习总结
下一篇: http跟https的区别