阿里巴巴官网招聘网站,网站后台怎么修改文字,网站建设维护员是做什么的,网站制作哈尔滨目录 一. #x1f981; 写在前面二. #x1f981; 探索过程2.1 开端 —— 开始写 bug2.2 发展 —— bug 完成2.3 高潮 —— bug探究2.4 结局 —— 效果展示 三. #x1f981; 写在最后 一. #x1f981; 写在前面
今天又是 BUG 气满满的一天#xff0c;一个 xxxMapper.xm… 目录 一. 写在前面二. 探索过程2.1 开端 —— 开始写 bug2.2 发展 —— bug 完成2.3 高潮 —— bug探究2.4 结局 —— 效果展示 三. 写在最后 一. 写在前面
今天又是 BUG 气满满的一天一个 xxxMapper.xml 因主键id 重复而出现的 bug 献上
二. 探索过程
2.1 开端 —— 开始写 bug
就在刚刚 在写项目的时候在实现一个多表联查的功能时遇到一个不可描述的 BUG我写完SQL 测试完成才去项目配置相关映射的SQL 如下
SELECTa.id,a.username,r.id ,r.role_name,r.role_desc,p.id ,p.permission_name,p.url
FROMadmin aLEFT JOIN admin_role ON a.id admin_role.aidLEFT JOIN role r ON admin_role.rid r.idLEFT JOIN role_permission ON r.id role_permission.ridLEFT JOIN permission p ON role_permission.pid p.id
WHEREa.id 133622996测试结果如下 一点毛病没有
2.2 发展 —— bug 完成
当我自信满满回到项目中配置完相关代码后(因为时多表查询所以需要配置一个 xxxMapper.xml 文件) select idfindById parameterTypelong resultMapadminMapperSELECT a.id,a.username,r.id ,r.role_name,r.role_desc,p.id ,p.permission_name,p.urlFROM admin aLEFT JOIN admin_roleON a.id admin_role.aidLEFT JOIN role rON admin_role.rid r.idLEFT JOIN role_permissionON r.id role_permission.ridLEFT JOIN permission pON role_permission.pid p.idWHERE a.id #{aid}
/selectadminMapper 配置如下
resultMap idadminMapper typecom.lion.online.pojo.Adminid propertyid columnid/idresult propertyusername columnusername/resultcollection propertyroles columnid ofTypecom.lion.online.pojo.Roleid propertyid columnid/idresult propertyroleName columnrole_name/resultresult propertyroleDesc columnrole_desc/resultcollection propertypermissions columnid ofTypecom.lion.online.pojo.Permissionid propertyid columnid/result propertypermissionName columnpermission_name/resultresult propertyurl columnurl/result/collection/collection
/resultMap运行控制台结果和数据库查询的结果一样 正当一切都是朝着正轨走的时候页面运行的结果却长这样 已经亚麻住了… … 想起了手机中的这个表情包 2.3 高潮 —— bug探究
出现这个结果始料不及于是去搜了一下发现也有很多 冤大头 出现了和我一样的错误终于知道问题出现在哪里 原因是在构造返回类型的时候使用了 ResultMap 标签但是由于我的数据库表主键名字都是 id所以在 ResultMap 中出现了多个同样的 id 字段导致分表的 id 值和主表一样(简单来说就是Mybatis在查询时对这几个都长得一样的id 混乱了)。知道了问题我们就可以着手解决了
配置 collection 一对多关联的话需要改 column 别名否则查询出来条数不对在 ResultMap 中property 属性对应实体类中的属性而 column 属性严格来说对应结果集中的列名而不是数据库中的列名。 例如如果对列起了别名那么 column 属性对应的就是别名而不是原来的列名。
改动如下
resultMap 修改 column 列名 代码使用别名
2.4 结局 —— 效果展示 三. 写在最后
一个 BUG 赠给屏幕前的你望君喜欢。 其它优质专栏推荐 《Java核心系列修炼内功无上心法)》: 主要是JDK源码的核心讲解几乎每篇文章都过万字让你详细掌握每一个知识点 《springBoot 源码剥析核心系列》一些场景的Springboot源码剥析以及常用Springboot相关知识点解读 欢迎加入狮子的社区『Lion-编程进阶之路』日常收录优质好文
更多文章可持续关注上方的博客2023咱们顶峰相见