查询多条数据使用Find方法,Find方法的第一个参数为slice的指针或Map指针,即为查询后返回的结果,第二个参数可选,为查询的条件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"`
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, 5)
u[0].Name = "abcd"
u[1].Name = "acbd"
u[2].Name = "dbac"
u[3].Name = "cbda"
u[4].Name = "bdca" _, err = engine.Insert(u)
if err != nil {
log.Fatal(err)
return
}
*/ /* 1) 传入Slice用于返回数据
everyone := make([]Userinfo, 0)
err := engine.Find(&everyone) pEveryOne := make([]*Userinfo, 0)
err := engine.Find(&pEveryOne)*/ users := make([]User,0)
err = engine.Find(&users)
if err != nil {
log.Fatal(err)
return
} for i,u := range users{
fmt.Println("只传第一个参数,传入slice用于返回数据,index:",i,"user",u.Name)
}
fmt.Println() users1 := make([]User,0)
err = engine.Find(&users1)
if err != nil {
log.Fatal(err)
return
} for i,u := range users1{
fmt.Println("只传第一参数,传入slice用于返回数据,index:",i,"user",u.Name)
}
fmt.Println() users2 := make([]User,0)
s2 := new(User)
s2.Name ="abcd" err = engine.Find(&users2,s2)
if err != nil {
log.Fatal(err)
return
} for i,u := range users2{
fmt.Println("传两个参数,传入slice用于返回数据,index:",i,"user",u.Name)
} fmt.Println() users3 := make([]User,0)
s3 := new(User)
s3.Name ="abcd"
err = engine.Find(&users3,s3)
if err != nil {
log.Fatal(err)
return
} for i,u := range users3{
fmt.Println("只传第一参数,传入slice用于返回数据,index:",i,"user",u.Name)
} fmt.Println()
fmt.Println() /*2) 传入Map用户返回数据,map必须为map[int64]Userinfo的形式,map的key为id,因此对于复合主键无法使用这种方式。 users := make(map[int64]Userinfo)
err := engine.Find(&users) pUsers := make(map[int64]*Userinfo)
err := engine.Find(&pUsers)*/ users4 := make(map[int64]User,0)
err = engine.Find(&users4)
if err != nil {
log.Fatal(err)
return
} for i,u := range users4{
fmt.Println("只传第一个参数,传入map用于返回数据,index:",i,"user",u.Name)
}
fmt.Println() users5 := make(map[int64]User,0)
s5 := new(User)
s5.Name ="abcd" err = engine.Find(&users5,s5)
if err != nil {
log.Fatal(err)
return
} for i,u := range users5{
fmt.Println("传两个参数,传入map用于返回数据,index:",i,"user",u.Name)
} fmt.Println()
fmt.Println() /*
3) 也可以加入各种条件
users := make([]Userinfo, 0)
err := engine.Where("age > ? or name = ?", 30, "xlw").Limit(20, 10).Find(&users)
*/ users6 := make(map[int64]User,0)
err = engine.Where("name > ?","baaa").Find(&users6)
if err != nil {
log.Fatal(err)
return
} for i,u := range users6{
fmt.Println("只传第一个参数,传入map用于返回数据,index:",i,"user",u.Name)
}
fmt.Println() /*4) 如果只选择单个字段,也可使用非结构体的Slice
var ints []int64
err := engine.Table("user").Cols("id").Find(&ints)
*/ var ints []int64
err = engine.Table("user").Cols("id").Find(&ints) if err != nil {
log.Fatal(err)
return
} for i := range ints{
fmt.Println("如果只选择单个字段,也可使用非结构体的Slice,index:",i)
}
} /*
输出:
只传第一个参数,传入slice用于返回数据,index: 0 user abcd
只传第一个参数,传入slice用于返回数据,index: 1 user acbd
只传第一个参数,传入slice用于返回数据,index: 2 user dbac
只传第一个参数,传入slice用于返回数据,index: 3 user cbda
只传第一个参数,传入slice用于返回数据,index: 4 user bdca 只传第一参数,传入slice用于返回数据,index: 0 user abcd
只传第一参数,传入slice用于返回数据,index: 1 user acbd
只传第一参数,传入slice用于返回数据,index: 2 user dbac
只传第一参数,传入slice用于返回数据,index: 3 user cbda
只传第一参数,传入slice用于返回数据,index: 4 user bdca 传两个参数,传入slice用于返回数据,index: 0 user abcd 只传第一参数,传入slice用于返回数据,index: 0 user abcd 只传第一个参数,传入map用于返回数据,index: 1 user abcd
只传第一个参数,传入map用于返回数据,index: 2 user acbd
只传第一个参数,传入map用于返回数据,index: 3 user dbac
只传第一个参数,传入map用于返回数据,index: 4 user cbda
只传第一个参数,传入map用于返回数据,index: 5 user bdca 传两个参数,传入map用于返回数据,index: 1 user abcd 只传第一个参数,传入map用于返回数据,index: 3 user dbac
只传第一个参数,传入map用于返回数据,index: 4 user cbda
只传第一个参数,传入map用于返回数据,index: 5 user bdca 如果只选择单个字段,也可使用非结构体的Slice,index: 0
如果只选择单个字段,也可使用非结构体的Slice,index: 1
如果只选择单个字段,也可使用非结构体的Slice,index: 2
如果只选择单个字段,也可使用非结构体的Slice,index: 3
如果只选择单个字段,也可使用非结构体的Slice,index: 4 */

xorm -Find方法实例的更多相关文章

  1. xorm -Exist方法实例

    判断某个记录是否存在可以使用Exist, 相比Get,Exist性能更好. package main import ( "fmt" _ "github.com/go-sq ...

  2. xorm -Get方法实例

    查询单条数据使用Get方法,在调用Get方法时需要传入一个对应结构体的指针,同时结构体中的非空field自动成为查询的条件和前面的方法条件组合在一起查询 package main import ( & ...

  3. JDBC连接MySQL 方法 实例及资料收集

    JDBC连接MySQL 方法 实例及资料收集 准备工作 首先,安装MySQL,配置用户名和密码,创建数据库. 可参见之前的文章: http://www.cnblogs.com/mengdd/p/315 ...

  4. [原创]java WEB学习笔记102:Spring学习---Spring Bean配置:bean配置方式(工厂方法(静态工厂方法 & 实例工厂方法)、FactoryBean) 全类名

    本博客的目的:①总结自己的学习过程,相当于学习笔记 ②将自己的经验分享给大家,相互学习,互相交流,不可商用 内容难免出现问题,欢迎指正,交流,探讨,可以留言,也可以通过以下方式联系. 本人互联网技术爱 ...

  5. Java中==、equals、hashcode的区别与重写equals以及hashcode方法实例(转)

    Java中==.equals.hashcode的区别与重写equals以及hashcode方法实例  原文地址:http://www.cnblogs.com/luankun0214/p/4421770 ...

  6. 【转】Java中==、equals、hashcode的区别与重写equals以及hashcode方法实例

    原文地址:http://www.cnblogs.com/luankun0214/p/4421770.html 感谢网友的分享,记录下来只为学习. 1.重写equals方法实例   部分代码参考http ...

  7. php后台如何避免用户直接进入方法实例

    这篇文章介绍了php后台如何避免用户直接进入方法实例,有需要的朋友可以参考一下 1)创建BaseController控制器继承Controller(后台的一切操作要继承BaseController): ...

  8. js生成随机数的方法实例总结 [收藏]

    js生成随机数的方法实例总结 js生成随机数主要用到了内置的Math对象的random()方法.用法如:Math.random().它返回的是一个 0 ~ 1 之间的随机数.有了这么一个方法,那生成任 ...

  9. JS常用方法总结,及jquery异步调用后台方法实例

    //前台接收get参数值 function getQueryString(name) {            var queryStrings = window.location.search.sp ...

随机推荐

  1. gj的交换机在升级了ios之后最新数据不刷新,

    下午2点开始升级5点结束,之后监控项获取不到最新数据,显示网络接口一直是down的状态,但是登上设备之后显示的是正常up状态, 怀疑是自动发现规则的问题,但是查看之后都是1个小时,应该不会, 这时候诡 ...

  2. java web项目改装exe安装版

    https://blog.csdn.net/rico_zhou/article/details/79868129java简单程序打包成exe https://blog.csdn.net/rico_zh ...

  3. 开源项目 11 Ionic Zip

    using Ionic.Zip; using System; using System.Collections.Generic; using System.IO; using System.Linq; ...

  4. PHP全栈学习笔记33

    javascript能做什么? 语句与注解,标识符,字面量,变量命名规范 JavaScript中的数据类型,其它类型如何转为数据型,操作符 字符方法,数组方法,函数与对象,函数表达式,变量作用域,对象 ...

  5. Exception in thread "main" java.lang.IllegalStateException: Failed to read 问题解决

    开发中偶尔遇到这样的问题:Exception in thread "main" java.lang.IllegalStateException: Failed to read .. ...

  6. mysql e的n次幂exp()

    mysql> ); +-------------------+ | exp() | +-------------------+ | 2.718281828459045 | +---------- ...

  7. 无人机一体化3DGIS服务平台

    随着无人机技术的发展,无人机携带多种设备为GIS应用提供多元化海量基础数据.无人机航测更是以快速.灵活.高效的数据获取方式,迅速扩大了现有的GIS市场,同时GIS行业的广泛应用也推动了无人机技术的发展 ...

  8. 集合类 collection接口 LinkedList

    LinkedList 是另外一种重要的数据结构形式, 底层是使用了双向链表数据结构, 特点: 查询速度慢,增删快. 继承关系如下: 可以发现,LinkedList同时实现了Quene和Deque接口. ...

  9. 【大数据作业十一】分布式并行计算MapReduce

    作业要求:https://edu.cnblogs.com/campus/gzcc/GZCC-16SE2/homework/3319 1.用自己的话阐明Hadoop平台上HDFS和MapReduce的功 ...

  10. Zookeeper运维常用四字命令

    Zookeeper运维常用四字命令 echo stat|nc 127.0.0.1 2181 查看哪个节点被选择作为follower或者leader 使用echo ruok|nc 127.0.0.1 2 ...