zoukankan      html  css  js  c++  java
  • 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
      */
      
      
  • 相关阅读:
    java Des 加密解密技术
    JAVA处理外部链接的方法
    javascript 中escape、encodeURI、encodeURIComponent 区别
    JQuery与JS 遍历和操作 父页面控件的比较
    JS 添加删除元素 /DOM
    jquery 验证所有text,textare非法字符
    jquery url检测遇到的jquery跨域问题及JSONP的使用
    二叉树遍历非递归算法——后序遍历
    二叉树遍历非递归算法——中序遍历
    二叉树遍历非递归算法——先序遍历
  • 原文地址:https://www.cnblogs.com/jiangxiangxiang/p/10935674.html
Copyright © 2011-2022 走看看