xorm -sum 系列方法实例
程序员文章站
2022-04-13 22:28:16
求和数据可以使用Sum, SumInt, Sums 和 SumsInt 四个方法,Sums系列方法的参数为struct的指针并且成为查询条件。 go package main import ( "fmt" _ "github.com/go sql driver/mysql" "github.com/ ......
-
求和数据可以使用sum, sumint, sums 和 sumsint 四个方法,sums系列方法的参数为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 } */ /* sum 求某个字段的和,返回float64*/ uu := new(user) total, err := engine.where("name > ?", "u0").sum(uu, "money") if err != nil { log.fatal(err) return } fmt.printf("sum方法,名字大于u0的所有人的钱的总和是 %d", int(total)) fmt.println() /*sumint 求某个字段的和,返回int64*/ uu1 := new(user) total1, err := engine.where("name > ?", "u0").sumint(uu1, "money") fmt.printf("sumint方法,名字大于u0的所有人的钱的总和是 %d", total1) fmt.println() /* sums 求某几个字段的和, 返回float64的slice ss := new(sumstruct) totals, err := engine.where("id >?", 1).sums(ss, "money", "rate") fmt.printf("money is %d, rate is %.2f", int(total[0]), total[1]) */ uu2 := new(user) total2, err := engine.where("name > ?", "u0").sums(uu2, "money", "age") fmt.printf("sums方法,名字大于u0的所有人的钱的总和是 %f,年龄的和是 %f", total2[0], total2[1]) fmt.println() /* sumsint 求某几个字段的和, 返回int64的slice ss := new(sumstruct) totals, err := engine.where("id >?", 1).sumsint(ss, "money") fmt.printf("money is %d", total[0])*/ uu3 := new(user) total3, err := engine.where("name > ?", "u0").sumsint(uu3, "money", "age") fmt.printf("sumsint方法,名字大于u0的所有人的钱的总和是 %d,年龄的和是 %d", total3[0], total3[1]) fmt.println() } /*输出: sum方法,名字大于u0的所有人的钱的总和是 5 sumint方法,名字大于u0的所有人的钱的总和是 5 sums方法,名字大于u0的所有人的钱的总和是 5.000000,年龄的和是 2.000000 sumsint方法,名字大于u0的所有人的钱的总和是 5,年龄的和是 2 */