xorm-Iterate/Count/Rows方法实例
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
xorm-Iterate/Count/Rows方法实例的更多相关文章
- php学习之道:mysql SELECT FOUND_ROWS()与COUNT(*)使用方法差别
在mysql中 FOUND_ROWS()与COUNT(*)都能够统计记录.假设都一样为什么会有两个这种函数呢.以下我来介绍SELECT FOUND_ROWS()与COUNT(*)使用方法差别 SELE ...
- JS常用方法总结,及jquery异步调用后台方法实例
//前台接收get参数值 function getQueryString(name) { var queryStrings = window.location.search.sp ...
- 【跟着stackoverflow学Pandas】How to iterate over rows in a DataFrame in Pandas-DataFrame按行迭代
最近做一个系列博客,跟着stackoverflow学Pandas. 以 pandas作为关键词,在stackoverflow中进行搜索,随后安照 votes 数目进行排序: https://stack ...
- 编写Java程序,创建Dota游戏中的兵营类,兵营类有一个类成员变量count、一个实例变量name和另一个实例变量selfCount。
返回本章节 返回作业目录 需求说明: 创建Dota游戏中的兵营类 兵营类有一个类成员变量count.一个实例变量name和另一个实例变量selfCount. count表示的是兵营已经创建士兵的总数: ...
- 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 ...
- 【转】Java中==、equals、hashcode的区别与重写equals以及hashcode方法实例
原文地址:http://www.cnblogs.com/luankun0214/p/4421770.html 感谢网友的分享,记录下来只为学习. 1.重写equals方法实例 部分代码参考http ...
- php后台如何避免用户直接进入方法实例
这篇文章介绍了php后台如何避免用户直接进入方法实例,有需要的朋友可以参考一下 1)创建BaseController控制器继承Controller(后台的一切操作要继承BaseController): ...
随机推荐
- learning scala akka actorySystem create and close
package com.example import akka.actor.ActorSystem import scala.util.{Failure, Success} import scala. ...
- WinDbg常用命令系列---.cmdtree
.cmdtree 简介 使用形式 .cmdtree cmdfile 参数 cmdfile命令文件,包含多个你需要的命令.必须是一个文本档 使用步骤 1.使用命令创建文本文件test.wl,使用以下示例 ...
- WinDbg常用命令系列---符号相关命令
ld (Load Symbols) ld命令加载指定模块的符号并更新所有模块信息. ld ModuleName [/f FileName] 参数: ModuleName指定要加载其符号的模块的名称.m ...
- Hadoop版本升级(2.7.6 => 3.1.2)
自己的主机上的Hadoop版本是2.7.6,是测试用的伪分布式Hadoop,在前段时间部署了Hive on Spark,但由于没有做好功课,导致了Hive无法正常启动,原因在于Hive 3.x版本不适 ...
- ArrayList: java之ArrayList详细介绍(转)
1 ArrayList介绍 ArrayList简介 ArrayList 是一个数组队列,相当于 动态数组.与Java中的数组相比,它的容量能动态增长.它继承于AbstractList,实现了List ...
- python虛擬環境和工具
1.命令 pip install virtualenvwrapper-win mkvirtualenv env_xadmin deactivate 退出 pip list pip install m ...
- docker登录报错Error response from daemon: Get https://192.168.30.10/v1/users/: dial tcp 192.168.30.10:443: connect: connection refused
背景描述: 登录docker报错: [root@localhost sysconfig]# docker login 192.168.30.10 Username (newcs06): newcs06 ...
- 009-MySQL循环while、repeat、loop使用
一.循环使用 mysql常见的三种循环方式:while.repeat和loop循环.还有一种goto,不推荐使用. 前提1.创建基本表结构 # 创建表结构 drop table if exists ` ...
- 时间工具类DateUtil
import java.sql.Timestamp; import java.text.ParseException; import java.text.SimpleDateFormat; impor ...
- [LeetCode] 340. Longest Substring with At Most K Distinct Characters 最多有K个不同字符的最长子串
Given a string, find the length of the longest substring T that contains at most k distinct characte ...