beego使用原生sql语句进行数据查询的几种方式

使用values查询列表

// 通过values获取DB中的列表数据
func GetAddressByUserId(id string) (dataList []orm.Params, err error) {
	// 数据封装的列表
	var list []orm.Params
	o := orm.NewOrm()
	nums, err := o.Raw("SELECT create_time,is_delete,update_time,address,door FROM address WHERE uid = ?", id).Values(&list)
	if nums == 0 {

	}
	return list, err
}

返回数据样式

{
  "code": 200,
  "msg": "",
  "data": [
    {
      "address": "哈哈",
      "create_time": "2018-12-28 19:53:03",
      "door": "2栋223房间",
      "is_delete": "0",
      "update_time": "2019-07-18 16:07:11"
    },
    {
      "address": "哈哈",
      "create_time": "2018-12-28 19:53:03",
      "door": "2栋223房间",
      "is_delete": "0",
      "update_time": "2019-07-18 16:07:11"
    },
    {
      "address": "哈哈",
      "create_time": "2018-12-28 19:53:03",
      "door": "3栋223房间",
      "is_delete": "0",
      "update_time": "2019-07-18 16:07:11"
    },
    {
      "address": "哈哈",
      "create_time": "2018-12-28 19:53:03",
      "door": "4栋223房间",
      "is_delete": "0",
      "update_time": "2019-07-18 16:07:11"
    },
    {
      "address": "哈哈",
      "create_time": "2018-12-28 19:53:03",
      "door": "5栋223房间",
      "is_delete": "0",
      "update_time": "2019-07-18 16:07:11"
    },
    {
      "address": "哈哈",
      "create_time": "2018-12-28 19:53:03",
      "door": "6栋223房间",
      "is_delete": "0",
      "update_time": "2019-07-18 16:07:11"
    },
    {
      "address": "哈哈",
      "create_time": "2018-12-28 19:53:03",
      "door": "7栋223房间",
      "is_delete": "0",
      "update_time": "2019-07-18 16:07:11"
    },
    {
      "address": "哈哈",
      "create_time": "2018-12-28 19:53:03",
      "door": "8栋223房间",
      "is_delete": "0",
      "update_time": "2019-07-18 16:07:11"
    }
  ]
}

使用queryRows查询列表

注:此方法必须有对应的struct进行映射

// 通过queryRow获取DB中的数据
type AddressInfo struct {
	CreateTime string `json:"create_time"`
	IsDelete   int    `json:"is_delete"`
	UpdateTime string `json:"update_time"`
	Address    string `json:"address"`
	Door       string `json:"door"`
}

func GetAddressByUserId2(id string) (dataList []AddressInfo, err error) {
	// 数据封装的列表
	var list []AddressInfo
	o := orm.NewOrm()
	nums, err := o.Raw("SELECT create_time,is_delete,update_time,address,door FROM address WHERE uid = ?", id).QueryRows(&list)
	if nums == 0 {

	}
	return list, err
}

返回数据

{
  "code": 200,
  "msg": "",
  "data": [
    {
      "create_time": "2018-12-28 19:53:03",
      "is_delete": 0,
      "update_time": "2019-07-18 16:07:11",
      "address": "哈哈",
      "door": "2栋223房间"
    },
    {
      "create_time": "2018-12-28 19:53:03",
      "is_delete": 0,
      "update_time": "2019-07-18 16:07:11",
      "address": "哈哈",
      "door": "2栋223房间"
    },
    {
      "create_time": "2018-12-28 19:53:03",
      "is_delete": 0,
      "update_time": "2019-07-18 16:07:11",
      "address": "哈哈",
      "door": "3栋223房间"
    },
    {
      "create_time": "2018-12-28 19:53:03",
      "is_delete": 0,
      "update_time": "2019-07-18 16:07:11",
      "address": "哈哈",
      "door": "4栋223房间"
    },
    {
      "create_time": "2018-12-28 19:53:03",
      "is_delete": 0,
      "update_time": "2019-07-18 16:07:11",
      "address": "哈哈",
      "door": "5栋223房间"
    },
    {
      "create_time": "2018-12-28 19:53:03",
      "is_delete": 0,
      "update_time": "2019-07-18 16:07:11",
      "address": "哈哈",
      "door": "6栋223房间"
    },
    {
      "create_time": "2018-12-28 19:53:03",
      "is_delete": 0,
      "update_time": "2019-07-18 16:07:11",
      "address": "哈哈",
      "door": "7栋223房间"
    },
    {
      "create_time": "2018-12-28 19:53:03",
      "is_delete": 0,
      "update_time": "2019-07-18 16:07:11",
      "address": "哈哈",
      "door": "8栋223房间"
    }
  ]
}

通过values查询单条数据

其实就是通过values获取一个列表 取巧 从列表中拿第一条数据

// 通过values获取DB中的单条数据
func GetAddressByAddressId(id string) (data orm.Params, err error) {
	// 数据封装的列表
	var list []orm.Params
	o := orm.NewOrm()
	nums, err := o.Raw("SELECT create_time,is_delete,update_time,address,door FROM address WHERE uid = ?", id).Values(&list)
	if nums > 0 {
		return list[0], err
	}
	return nil, err
}

返回结果

{
  "code": 200,
  "msg": "",
  "data": {
    "address": "哈哈",
    "create_time": "2018-12-28 19:53:03",
    "door": "2栋223房间",
    "is_delete": "0",
    "update_time": "2019-07-18 16:07:11"
  }
}

使用queryRow获取单条数据

// 通过queryRow获取DB中的数据
type AddressInfo struct {
	CreateTime string `json:"create_time"`
	IsDelete   int    `json:"is_delete"`
	UpdateTime string `json:"update_time"`
	Address    string `json:"address"`
	Door       string `json:"door"`
}

func GetAddressByAddressId2(id string) (data AddressInfo, err error) {
	var address AddressInfo
	o := orm.NewOrm()
	err = o.Raw("SELECT create_time,is_delete,update_time,address,door FROM address WHERE uid = ?", id).QueryRow(&address)
	return address, err
}

返回数据

{
  "code": 200,
  "msg": "",
  "data": {
    "create_time": "2018-12-28 19:53:03",
    "is_delete": 0,
    "update_time": "2019-07-18 16:07:11",
    "address": "哈哈",
    "door": "2栋223房间"
  }
}

总结

整体来讲 使用queryRow和queryRows的时候 必须创建对应的struct
使用values查询单条或者列表数据 都可以直接映射为map key为数据库字段名称小写
如果能帮当您 万分荣幸~

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值