设为首页 加入收藏

TOP

xorm -sum 系列方法实例
2019-05-28 12:08:09 】 浏览:26
Tags:xorm -sum 系列 方法 实例
  • 求和数据可以使用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 */

编程开发网
】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
上一篇xorm-Iterate/Count/Rows方法实例 下一篇golang隐藏/显示window系统下的黑..

评论

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

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