记录一次使用SpringBoot集成Mybatis时多表联合查询时产生的映射问题:
我在创建表的字段的时候不习惯使用_作为字段名称的之间的连接符,而是直接使用驼峰命名来完成字段属性的编写(不提倡,需要改正)…苦笑脸
但是在此次项目中出现了一次多表联查,需要使用其他同事的表结构来完成此次的查询,恰巧该同事的字段名称命名较为规范,造成查询之后的值为null,解决Bug的过程很酸爽,特此纪念。
需要多表联查,轻车熟路,需要在返回的实体类中加入其他表中的返回字段,完成映射,
加入的字段如图:
//设备名称
private String equipmentName;
//设备序列号
private String equipmentSn;
对应的.xml文件
<select id="selectAllDevice" resultType="com.wx.buisserver.entity.Equipment">
select a.equipment_name,a.equipment_sn from device_location b left join control_equipment a on b.locationId=a.room_id where b.enterpriseId=#{enterpriseId} and a.status !=99
</select>
我在数据库中查询的记录
select a.equipment_name,a.equipment_sn from device_location b left join control_equipment a on b.locationId=a.room_id where b.enterpriseId='jd123456'
查询出来的结果:
但是在项目运行起来之后显示在postman中的数据就是空的
如图:
都是不报错才是最难解决的bug,但是这也难不倒我,一番询问度娘,终于发现,哦~~是不是我的字段没有起别名,导致映射的时候出现问题找不到实体类中的属性呀,马上就改
<select id="selectAllDevice" resultType="com.wx.buisserver.entity.Equipment">
select a.equipment_name equipmentName,a.equipment_sn equipmentSn from device_location b left join control_equipment a on b.locationId=a.room_id where b.enterpriseId=#{enterpriseId} and a.status !=99
</select>
加上别名,再运行:
学习的路上我们会遇到千千万万的困难,不要怕,冲过去,打败他,加油!奥里给!!!