使用beego开发多表查询返回字段问题
一、多表查询的时候建议使用原生sql查询,若使用beego提供的orm表定义的方法查询,返回字段形式固定,对于有代码强迫症的小伙伴来说很别扭,请看下图:
func GetGoodsList(form *GoodsListForm) (err *utils.ControllerError, list *[]orm.Params) {var maps []orm.Paramsvar returnp *utils.ControllerErroro := orm.NewOrm()qs := o.QueryTable(new(Goods)).RelatedSel()var limit, offset intvar errd errorif form.Limit < 1 {limit = 20}if form.Offset < 1 {offset = 0}if len(form.GoodTypId) == 0 {_, errd = qs.Limit(limit, offset).OrderBy("Look").Values(&maps, "name", "GoodType__TypeId", "GoodType__TypeName", "Look", "GoodsId", "Price", "Discount", "ImageUrl", "StoreInfo__Amount", "StoreInfo__Left")} else {_, errd = qs.Filter("GoodType__TypeId", form.GoodTypId).Limit(limit, offset).OrderBy("Look").Values(&maps, "name", "GoodType__TypeId", "GoodType__TypeName", "Look", "GoodsId", "Price", "Discount", "ImageUrl", "StoreInfo__Amount", "StoreInfo__Left")}if errd != nil {returnp = utils.ErrDatabase} else {returnp = utils.Actionsuccess}return returnp, &maps
}
传入参数返回:
{"code": 9000,"data": [{"Discount": 7,"GoodType__TypeId": "2018020209225223","GoodType__TypeName": "保险推销","GoodsId": "2018020209252238","ImageUrl": "","Look": 9,"Name": "成人意外险","Price": 90,"StoreInfo__Amount": 350,"StoreInfo__Left": 350}],"message": "获取信息成功"
}
返回字段都是大写,且关联表字段含有双_,对于这样的格式我只能呵呵了。
如果采用原生SQL查询,请看一下代码:
func GetGoodsList1(form *GoodsListForm) (err *utils.ControllerError, list *[]orm.Params) {var maps []orm.Paramsvar returnp *utils.ControllerErrorvar errd errorlimit, offset := form.Limit, form.Offsetif limit < 1 {limit = 20}if offset < 1 {offset = 0}o := orm.NewOrm()if len(form.GoodTypId) > 0 {_, errd = o.Raw("SELECT T0.`name` `name`, T1.`type_id` `typeid`, T1.`type_name` `typename`, T0.`look` `look`, T0.`goods_id` `goodsid`, T0.`price` `price`, T0.`discount` `discount`, T0.`image_url` `imageurl`, T2.`amount` `amount`, T2.`left` `left` FROM `goods` T0 INNER JOIN `good_type` T1 ON T1.`id` = T0.`good_type_id` INNER JOIN `good_store` T2 ON T2.`id` = T0.`store_info_id` WHERE T1.`type_id` = ? ORDER BY T0.`look` ASC LIMIT ? OFFSET ?", form.GoodTypId, limit, offset).Values(&maps)} else {_, errd = o.Raw("SELECT T0.`name` `name`, T1.`type_id` `typeid`, T1.`type_name` `typeName`, T0.`look` `look`, T0.`goods_id` `goodsid`, T0.`price` `price`, T0.`discount` `discount`, T0.`image_url` `imageurl`, T2.`amount` `amount`, T2.`left` `left` FROM `goods` T0 INNER JOIN `good_type` T1 ON T1.`id` = T0.`good_type_id` INNER JOIN `good_store` T2 ON T2.`id` = T0.`store_info_id` ORDER BY T0.`look` ASC LIMIT ? OFFSET ?", limit, offset).Values(&maps)}if errd != nil {returnp = utils.ErrDatabase} else {returnp = utils.Actionsuccess}return returnp, &maps
}
传入参数返回:
{"code": 9000,"data": [{"amount": "350","discount": "7","goodsid": "2018020209252238","imageurl": "","left": "350","look": "9","name": "成人意外险","price": "90","typeid": "2018020209225223","typename": "保险推销"}],"message": "获取信息成功"
}
采用原生SQL可以随意修改返回参数的名称了,再也不用担心有代码强迫症的伙伴BB了。
使用beego开发多表查询返回字段问题相关推荐
- 通用表查询返回所有行(只适用于单表)
@GetMapping(value = "/user") @ResponseBodypublic List<SysUser> getUser(String userNa ...
- Hibernate 原生SQL多表查询时-字段名相同-查询数据覆盖问题
问题描述 实际工作中通过Hibernate进行多表查询 两个实体类有相同属性 如下图所示 t_project_iter和t_project_story 表中TITLE 中字段名称相同 通过如下图方式进 ...
- SELECT连表查询重复字段
连表查询不用SELECT * 直接用 SELECT FIELD 列字段,错误:两个表出现重复的两个字段userId: Cause: java.sql.SQLIntegrityConstraintVio ...
- 多表查询,字段名重复问题解决
mybatis在进行多表查询的时候遇到多表有重复的列名,会导致查询的结果有误,少赋值,或者错赋值等问题. 尽量减少列名重复,无法避免时可以给列名起别名,用resultMap中的column属性值就是你 ...
- java多表查询返回数据_spring data jpa如何在多张数据库表中查询返回某些字段值?...
对于多表联查需要使用springdata jpa的@Query标注实现,例如最代码的我的私信列表的查询:public static final String POSTREPOSITORY_FINDAL ...
- 微信小程序云开发联表查询【聚合】
先附上官方文档 主要使用的是lookup,分为相等匹配和自定义连接条件.拼接子查询,难的是第二种查询方式 第一种 lookup({from: <要连接的集合名>,localField: & ...
- 多表查询返回多个DataTable,合并到一个Table中.
本文意在说明一下DataSet.Merge(Table)和多个Table合并到一个里面的操作.因为是新手,代码肯定有很多问题,欢迎大家批评指正. 如果你有更好的解决方案,请告诉我.谢谢. 先说一 ...
- php查询字段的总和,ThinkPHP 多表查询-如其字段A相同,则把字段B相加
在一个项目中,需要查询表tr_product中的user_id字段,如果user_id相同,则把其对应的money字段相加,数据库截图如下: 实现代码: $Model = D('Model'); $r ...
- 微信云开发联表查询 表1与表2关联 表2与表3关联
业务逻辑 实现转盘抽奖游戏 需求数据 1.转盘抽奖表 2.转盘奖品对用的卡券表 3.卡券对应的卡券档案表 三表关系 抽奖表的 cardid(卡券ID) 等于 卡券表的(id) ,卡券表的(daid) ...
最新文章
- 七个开发者成就百亿市值公司?这个技术思路如今让阿里发扬光大
- mysql数据库容量查询
- opencv透视变换:GetPerspectiveTransform、warpPerspective函数的使用
- Verilog hdl与VHDL混用详解
- 187. Repeated DNA Sequences重复的DNA子串序列
- PHP 从结果集中取得一行作为关联数组:
- mysql初始化脚本建表_mysql新建表修改表sql脚本
- Jetty9 源码初解(2)——IO之Connection
- Error: failed to unmarshal json. invalid character '\'' looking for beginning of value解决方案
- windows10重装后锁定其他盘_电脑重装Windows10系统步骤
- python依赖包安装
- jwplayer android m3u8,播放上jwplayer M3U8文件,而RTMP
- 【ArcGIS Pro微课1000例】0009:ArcGIS Pro地理配准完整教程(建议收藏)
- 2023西安电子科技大学计算机考研信息汇总
- 13款入侵检测系统介绍(HIDS)
- java设计课堂派的教师端
- 《水浒传》108将的绰号(ZZ)
- win10彻底禁用自动更新,win10怎样彻底关闭自动更新,永久关闭win10自动更新,win10更新助手...
- Gson系列1 --- Gson 序列化与反序列化 -- 数组 / 集合序列化
- JAVA 开发命名规范——阿里巴巴Java开发手册
热门文章
- ubuntu升级python_Ubuntu 系统下可以做什么?——拥抱自由和安静
- v4l2 框架下如何设置分辨率_【微学习】低压计量电表如何设置?(下)
- Python脚本运行出现语法错误:IndentationError: unindent does not match any outer indentation level
- 一维卷积神经网络、卷积神经网络的基础知识
- SAGAN原理及代码(B站详解,很值得一看)
- 2-2hadoop概述
- CSS文字颜色渐变 - 案例篇
- khv是什么虚拟服务器,服务器虚拟化vSphere4 vs Hyper-V R2,选择谁?
- 小程序view设置背景图片_小程序商城分销功能设置技巧 设计方法
- python发送邮件并返回提示_python-邮件提醒功能