首先这是一个多表查询,一对多关系,君悦酒店及既可能存在北京,也可能存在上海,在mysql里面的结果如下:

一开始我的查询语句,以及映射情况如下

<resultMap id="BaseResultMap2" type="cn.edu.bcu.longtermroom.hotel.pc.entity.HotelExtend2"><id property="id" column="id"/><result property="gmtCreat" column="gmt_creat" /><result property="gmtModified" column="gmt_modified" /><result property="hotelName" column="hotel_name" /><result property="brandId" column="brand_id" /><result property="saleStatus" column="sale_status" /><result property="lastOrder" column="last_order" /><result property="lastConfirm" column="last_confirm"/><result property="star" column="star" /><result property="address" column="address" /><result property="telephone" column="telephone" /><result property="introduce" column="introduce" /><result property="lastOrder" column="last_order" /><result property="remain" column="remain" /><association property="brand" javaType="cn.edu.bcu.longtermroom.hotel.pc.entity.Brand"><id property="id" column="id"></id><result property="brandName" column="brand_name"/><result property="icon" column="icon"/><result property="brandDetail" column="brand_detail"/><result property="brandRemark" column="brand_remark"/></association><association property="city" javaType="cn.edu.bcu.longtermroom.hotel.pc.entity.City"><id property="id" column="id"></id><result property="cityName" column="city_name"></result></association></resultMap><select id="selectHotelByMany" resultMap="BaseResultMap2">select distinct  h.id,h.gmt_creat,h.gmt_modified,h.hotel_name,h.brand_id,h.sale_status,h.last_order,h.last_confirm,h.star,h.address,b.brand_name,b.icon,b.brand_detail,b.brand_remark,city.id,city.city_namefrom hotel hleft join brand b on h.brand_id=b.idleft join hotel_area on h.id=hotel_area.hotel_idleft join city_area on hotel_area.area_id=city_area.area_idleft join city on city_area.city_id=city.id<where><if test="cityId!=null">city.id = #{cityId}</if><if test="hotelName!=null">and h.hotel_name like  '%${hotelName}%'</if><if test="hotelId!=null">and h.id = #{hotelId}</if><if test="saleStatus!=null">and h.sale_status= #{saleStatus}</if></where></select>

我的查询里面查了两个id,一个酒店id一个城市id,映射直接没做处理一直报错duplicated column “id”,还是映射id重了呗,因为查询语句是没有问题的在navcat里面试过,那就是映射的问题。 重了id,那我就取别名

首先这个城市id列取别名为cid ,对应的映射cid的如下,那么这个报错解决了,注意因为品牌id我没有进行select出来,是自动映射进去的,不会报错,但是数据其实是错误的,数据是酒店id,因为这里写的直接是id,数据中id是酒店id所以是错误的,这里我试过select加上b.id就会报错还是duplicate column 'id'这个错误

但是这样又出现了问题,数据不全,应该有四条数据最终只有三条,原因是mybatis自动根据id去重,也就是主键id,需要加上另外一个主键id城市id,那么mybatis会根据这两个进行去重,数据就是完整的了

同时封装类Hotelextend类再加一个属性cid

另外我发现一个问题就是查询的时候不是从酒店id为1开始,而是从6开始,乱序的,这应该是由于mysql引擎优化器的原因,mysql没有义务帮你按照id排序,惯性思维是根据id从上到下执行,这是正常的现象,想要排序直接用orderby吧

mybatis的坑啊,一个一个踩,写出来希望同时在采坑的人能节约点时间

mybatis一对多关系多表查询去重,不定条件查询,duplicated column id相关推荐

  1. MyBatis关联查询、多条件查询

    MyBatis关联查询.多条件查询 1.一对一查询 任务需求; 根据班级的信息查询出教师的相关信息 1.数据库表的设计 班级表: 教师表: 2.实体类的设计 班级表: public class Cla ...

  2. Mybatis基础:增删改查、模糊查询、多条件查询

    Mybatis基础:增删改查.模糊查询.多条件查询http://www.bieryun.com/3132.html 1.新建测试数据库,根据实体类属性创建 2.实体类 [java] view plai ...

  3. 单表无条件和有条件查询的SQL语句

    话不多说,直接上实验4 简单查询-单表无条件和有条件查询的SQL语句------------ (1) 查询所有学生的基本信息.所有课程的基本信息和所有学生的成绩信息(用三条SQL语句). SELECT ...

  4. alin的学习之路(数据库篇:二)(select查询,where条件查询,order by排序,单行函数,多行函数,group by分组)

    alin的学习之路(数据库篇:二)(select查询,where条件查询,order by排序,单行函数,多行函数,group by分组) 1. SQL语句 1.1 sql语言类型 sql是一门独立的 ...

  5. ssm框架中利用pagehelper分页,完成模糊查询与select条件查询

    ssm框架中利用pagehelper分页,完成模糊查询与select条件查询 一.问题分析 1.1 往期回顾 pagehelper分页 https://blog.csdn.net/Jia_Peng_T ...

  6. SQL之EXISTS子查询和IF条件查询

    不积跬步,无以至千里. " 今天给大家分享的是SQL的EXISTS子查询和IF条件查询语句. EXISTS EXISTS子查询 EXISTS用于检查子查询是否至少会返回一行数据,该子查询实际 ...

  7. java中多条件与不定条件查询

    java中多条件与不定条件查询 网站或各类管理系统都会用到搜索,会用到一个或多个不确定条件搜索,单条件搜索比较简单,有时候会有多个条件共同查询,如果系统中已经提供了相关的方法供你使用最好,像我做这老系 ...

  8. 众筹网站项目第四天之异步请求的分页查询和模糊条件查询(2)

    打开原教程视频 注:本人是渣渣,有错请谅解. 异步请求的分页查询和模糊条件查询 同步请求和异步请求的区别在实现登录功能时已经介绍过了,下图便是实现异步请求分页查询的时序图. 可以看出我们首先进行用户列 ...

  9. mongoTemplate的GroupOperation分组查询及Criteria条件查询的使用

    mongoTemplate的GroupOperation分组查询及Criteria条件查询的使用 GroupOperation: //此处类似于SQL中的groupBy,group("&qu ...

  10. 2019-7-27 [MySQL] DQL 简单查询[别名/去重/运算] 条件查询 排序查询 聚合查询 分组查询 导出与导入 多表操作[一对多/多对多][创外键 创联合主键 约束 添加 删除 测试]

    文章目录 5 SQL语句(DQL) 5.1DQL准备工作和语法 5.1.1准备工作 5.1.2 DQL语法: 5.2 简单查询 5.2.1 查询所有的商品 5.2.2 查询商品名和商品价格. 5.2. ...

最新文章

  1. php 多图上传编辑器,laravel中使用WangEditor及多图上传
  2. html 渐变透明写法,CSS3透明度+渐变
  3. HttpOperater
  4. android activity从新打开,【Android开发-8】生命周期,Activity中打开另一个Activity
  5. CentOS添加明细路由
  6. 转载:8个让程序员追悔莫及的职业建议
  7. UVA10424 Love Calculator【水题】
  8. 自动更新统计信息的阀值——人为更新统计信息的重要性
  9. arcgis for android 学习 - (5) 在地图指定位置添加“标记“,并尝试选中它
  10. 莫烦python讲得好差_莫烦PYTHON——PyTorch——DQN 代码详解
  11. android aar的打包引用和解决间接引用异常
  12. AUTOCAD——新建或修改尺寸样式
  13. c语言round函数作用,if条件函数怎样和round一起用?!,C++中round函数怎么用
  14. 关于菜鸡学习时服务器购买的注意点
  15. java 三个点号...的含义-可变参数
  16. FUHLEN/富勒 U79/U79G节能系列/U系列无线2.4G接收器-淘宝网
  17. 计算机开机太慢了,电脑开机速度慢怎么办?3分钟加快电脑开机速度
  18. 关于C语言和java变量赋值问题
  19. 基于GIS+AI、GIS+AR、GIS+三维的智慧城管综合应用平台
  20. 美团点评java面试题_最新美团面经Java,美团点评一面(面试题)

热门文章

  1. 【小小干货】如何寻找综述性论文?
  2. 2020年,最优秀的大数据公司有哪些?
  3. 解决安装mysql“staring the server“问题
  4. 苹果iPhone手机怎么恢复备份?详细iOS备份怎么恢复教程
  5. 树莓派开发板入门学习笔记2:[转]树莓派系统在VM中能做什么
  6. 思维方式-《学会提问》书中的精髓:批判性思维是人类对抗人工智能的最后阵地。
  7. UE4 InputMode无法锁定编辑器视口鼠标解决方案
  8. 如何突破编程学习的瓶颈期
  9. 什么是云平台_云短信发送平台有什么优势?
  10. 迅捷路由器造成计算机无法上网,迅捷路由器不能上网怎么办