查询多条数据使用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. echo如何输出带颜色的文本

    本文链接:https://blog.csdn.net/qualcent/article/details/7106483 ######################################## ...

  2. nginx 添加用户认证

    nginx 添加用户认证  nginx 配置文件添加: 配置代理添加用户认证:server {   listen       ;   server_name localhost;   location ...

  3. 从一道题浅说 JavaScript 的事件循环

    最近看到这样一道有关事件循环的前端面试题: //请写出输出内容 async function async1() { console.log('async1 start'); await async2( ...

  4. Vue.set 向响应式对象中添加响应式属性,及设置数组元素触发视图更新

    一.为什么需要使用Vue.set? vue中不能检测到数组和对象的两种变化: 1.数组长度的变化 vm.arr.length = 4 2.数组通过索引值修改内容 vm.arr[1] = ‘aa’ Vu ...

  5. 初识es

    初识es es是什么? es是基于Apache Lucene的开源分布式(全文)搜索引擎,,提供简单的RESTful API来隐藏Lucene的复杂性. es除了全文搜索引擎之外,还可以这样描述它: ...

  6. Hyperspectral Image Classification Using Similarity Measurements-Based Deep Recurrent Neural Networks

    用RNN来做像素分类,输入是一系列相近的像素,长度人为指定为l,相近是利用像素相似度或是范围相似度得到的,计算个欧氏距离或是SAM. 数据是两个高光谱数据 1.Pavia University,Ref ...

  7. 咕泡学院java架构vip课程

    1.wps文档地址 https://docs.qq.com/doc/DRVNLUndvTmFSdEhO 2.百度网盘地址 https://pan.baidu.com/s/1uxaTzJZHKrsw_H ...

  8. Ranger部署

    一.Apache Ranger是什么? Apache Ranger是一个框架,Hadoop上对于保护数据数据安全性的安全框架.用于在整个Hadoop平台上启用,监视和管理全面的数据安全性. 二.特性 ...

  9. 无法定位程序输入点到xxx.dll

    Q:安装pytorch时报错无法定位程序输入点到Anaconda3\Library\bin\libssl-1_1-x64.dll A:下载libssl-1_1-x64.dll覆盖bin下的文件 下载地 ...

  10. Linux下的nexus数据迁移

    刚到公司没多久,目前公司有两个项目公用一个nexus的maven私服,现在想把两个私服的jar包拆分开: 我在原私服的nexus服务器中, 1.备份原nexus使用命令 完成tar包的压缩 打包完毕后 ...