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 -sum 系列方法实例的更多相关文章
- ReactiveSwift源码解析(九) SignalProducerProtocol延展中的Start、Lift系列方法的代码实现
		上篇博客我们聊完SignalProducer结构体的基本实现后,我们接下来就聊一下SignalProducerProtocol延展中的start和lift系列方法.SignalProducer结构体的 ... 
- [Leetcode] Sum 系列
		Sum 系列题解 Two Sum题解 题目来源:https://leetcode.com/problems/two-sum/description/ Description Given an arra ... 
- sql语句实现行转列的3种方法实例
		sql语句实现行转列的3种方法实例 一般在做数据统计的时候会用到行转列,假如要统计学生的成绩,数据库里查询出来的会是这样的,但这并不能达到想要的效果,所以要在查询的时候做一下处理,下面话不多说了,来一 ... 
- JVM系列-方法调用的原理
		JVM系列-方法调用的原理 最近重新看了一些JVM方面的笔记和资料,收获颇丰,尤其解决了长久以来心中关于JVM方法管理的一些疑问.下面介绍一下JVM中有关方法调用的知识. 目的 方法调用,目的是选择方 ... 
- vue 快速入门 系列 —— Vue 实例的初始化过程
		其他章节请看: vue 快速入门 系列 Vue 实例的初始化过程 书接上文,每次调用 new Vue() 都会执行 Vue.prototype._init() 方法.倘若你看过 jQuery 的源码, ... 
- querySelectorAll 方法相比 getElementsBy 系列方法区别
		最近有人问到querySelectorAll 方法相比 getElementsBy 系列方法区别,一时没想起来说些什么,今天查下文档,总结一下它们的区别,以便自己理解. 1. W3C 标准queryS ... 
- JDBC连接MySQL 方法 实例及资料收集
		JDBC连接MySQL 方法 实例及资料收集 准备工作 首先,安装MySQL,配置用户名和密码,创建数据库. 可参见之前的文章: http://www.cnblogs.com/mengdd/p/315 ... 
- [原创]java WEB学习笔记102:Spring学习---Spring Bean配置:bean配置方式(工厂方法(静态工厂方法 & 实例工厂方法)、FactoryBean) 全类名
		本博客的目的:①总结自己的学习过程,相当于学习笔记 ②将自己的经验分享给大家,相互学习,互相交流,不可商用 内容难免出现问题,欢迎指正,交流,探讨,可以留言,也可以通过以下方式联系. 本人互联网技术爱 ... 
- Java中==、equals、hashcode的区别与重写equals以及hashcode方法实例(转)
		Java中==.equals.hashcode的区别与重写equals以及hashcode方法实例 原文地址:http://www.cnblogs.com/luankun0214/p/4421770 ... 
随机推荐
- BZOJ 5287: [Hnoi2018]毒瘤 动态dp(LCT+矩阵乘法)
			自己 yy 了一个动态 dp 做法,应该是全网唯一用 LCT 写的. code: #include <bits/stdc++.h> #define ll long long #define ... 
- Approximate Search
			题目链接:Gym-101492H 动态规划,应该是比较基础的,可是自己就是不会QAQ.... /* 把使用机会当成“花费” */ # include <iostream> # includ ... 
- USACO 2009 Open 干草塔 Tower of Hay
			USACO 2009 Open 干草塔 Tower of Hay Description 为了调整电灯亮度,贝西要用干草包堆出一座塔,然后爬到牛棚顶去把灯泡换掉.干草 包会从传送带上运来,共会出现N包 ... 
- SpringBoot框架 之 Druid与Swagger2
			目录 Druid Druid连接池配置 Druid数据监控 集成Swagger2 Swagger2简介 1.添加依赖 2.创建Swagger2配置类 3.在控制器方法上添加对应api信息 4.启动Sp ... 
- AOP的定义和原理
			一.本课目标 理解Spring AOP的原理 掌握Spring AOP的七个术语 二.面向切面编程(AOP) AOP的思想是,不去动原来的代码,而是基于原来代码产生代理对象,通过代理的方法,去包装原 ... 
- GIS地理处理脚本案例教程——批量栅格分割-批量栅格裁剪-批量栅格掩膜-深度学习样本批量提取
			GIS地理处理脚本案例教程--批量栅格分割-批量栅格裁剪-批量栅格掩膜-深度学习样本批量提取 商务合作,科技咨询,版权转让:向日葵,135-4855_4328,xiexiaokui#qq.com 关键 ... 
- Xamarin图表开发基础教程(4)OxyPlot框架
			Xamarin图表开发基础教程(4)OxyPlot框架 XamaminAndroid中绘制线图OxyPlotAndroidDemo [示例1-1:OxyPlotAndroidDemo]下面实现线图的绘 ... 
- (1)PyCharm开发工具安装Flask并创建helloworld程序
			一.环境描述 1.操作系统:windows7 2.编程语言:python3.6 下载地址:https://www.python.org/downloads/windows/ 3.虚拟化环境:virtu ... 
- MySQL数据库事务的四大特性以及事务的隔离级别
			一.事务的四大特性(ACID) 如果一个数据库声称支持事务的操作,那么该数据库必须要具备以下四个特性: 1.原子性(Atomicity) 原子性是指事务包含的所有操作要么全部成功,要么全部失败回滚,因 ... 
- python操作excel——openpyxl
			一.概述 python操作excel各个库对比:https://www.cnblogs.com/paul-liang/p/9187503.html 官方文档:https://openpyxl.read ... 
