电脑知识|欧美黑人一区二区三区|软件|欧美黑人一级爽快片淫片高清|系统|欧美黑人狂野猛交老妇|数据库|服务器|编程开发|网络运营|知识问答|技术教程文章 - 好吧啦网

您的位置:首頁技術文章
文章詳情頁

MyBatis-Plus 如何實現連表查詢的示例代碼

瀏覽:133日期:2023-10-23 10:49:52

在項目開發中,難免會遇到連表查詢的操作。

項目中用的是 MyBatis-Plus,是新使用的框架。官方文檔看這里。

我寫過一篇通過單元測試來驗證 MyBatis-Plus 的 CRUD 操作。點這里跳轉

今天遇到連表查詢的問題,特此記錄一下。

遇到需要連表操作,想起 MyBatis 的操作連表查詢,要是 MyBatis-Plus 也像 MyBatis 一樣,就腦殼痛了。(MyBatis-Plus 是 MyBatis 的增強版)

腦殼痛歸腦殼痛,先動手干。

首先

因為官方的內置接口方法都是針對單表的,所以要連表的話,還是得中規中矩來。

// 第一步,在 mapper.java 類中定義一個連表查詢的方法 selectTsxxWslapublic interface WTsxxMapper extends SuperMapper<WTsxx> { List<Object> selectTsxxWsla();}// 第二步,在 mapper.xml 中定義 id=’selectTsxxWsla’ 的查詢塊<mapper namespace='com.haoda.sswfw.dao.primary.mapper.WTsxxMapper'> <select resultType='map'> SELECT a.*,CONCAT(b.xxid,’’) AS xxid,b.nr,b.xxbt,b.weixzt,b.ywlxbm,b.createtime,b.glid FROM v_weix_user a,w_tsxx b JOIN ( SELECT xxid,user_name,createtime FROM w_tsxx_user ) c ON b.xxid = c.xxid WHERE a.user_name = c.user_name AND a.openid != ’’ AND b.weixzt = ’2’ AND b.errcode IS NULL AND LOWER(b.ywlxbm) = ’wsla’ </select></mapper>// 第三步,直接寫測試用例,看看能出來什么效果@RunWith(SpringRunner.class)@SpringBootTestpublic class DbTest { @Autowired private WTsxxMapper tsxxMapper; @Test public void test3() { List<Object> selectTsxxWsla = tsxxMapper.selectTsxxWsla(); for (Object obj : selectTsxxWsla) { System.out.println(obj); } }}

運行結果出來發現,select 語句中的字段都封裝成 Object,存到 List 集合中去了,不過有一點就是如果字段的值是 null 的,就不會封到 Object 里。

有點小開心

回顧一下我上次在 MyBatis 的連表方式,首先我在主表的實體類中把需要連表的實體類加進去了。

然后在 mapper.xml 添加了 association 標簽,用來配置關聯關系的。

然后

我發現可以封裝 Object,那我想是不是就可以自定義一個 VO 來封裝成一個實體類。

// 將查詢字段 自定義成 WxTsxxVopublic class WxTsxxVo { private String openid; private String unionid; private Long user_id; private String user_name; .....}// 原本 List<Object> 替換成 List<WxTsxxVo>public interface WTsxxMapper extends SuperMapper<WTsxx> { List<WxTsxxVo> selectTsxxWsla();}// 原本 List<Object> 替換成 List<WxTsxxVo>@Testpublic void test3() { List<WxTsxxVo> selectTsxxWsla = tsxxMapper.selectTsxxWsla(); for (WxTsxxVo obj : selectTsxxWsla) { System.out.println(obj); }}

然后很開心運行了 test3,想著結果應該沒問題的了,結果報錯了,報了個轉換異常,不能轉換成 WxTsxxVo 對象。

不對啊,Object 都沒有報錯,我定義了個 WxTsxxVo 實體就報錯了?

后來想想應該是查詢出來的結果不認識我這個 WxTsxxVo,網上搜了一下「連表查詢封裝進自定義實體類」,看到有個解決方案是 添加association標簽,還有另外一個解決方案是在 mapper.xml 中寫一個對應的 resultMap

所以我選擇嘗試第二種方案。

運行成功

// 對應 WxTsxxVo 實體類,寫了一個對應的 resultMap<resultMap type='com.haoda.sswfw.job.vo.WxTsxxVo'> <result column='openid' property='openid' /> <result column='unionid' property='unionid' /> <result column='user_id' property='user_id' /> <result column='user_name' property='user_name' /> ...</resultMap > // 原先的 resultType='map' 替換成 resultMap='WxTsxxVo'<select resultMap='WxTsxxVo'> SELECT a.*,CONCAT(b.xxid,’’) AS xxid,b.nr,b.xxbt,b.weixzt,b.ywlxbm,b.createtime,b.glid FROM v_weix_user a,w_tsxx b JOIN ( SELECT xxid,user_name,createtime FROM w_tsxx_user ) c ON b.xxid = c.xxid WHERE a.user_name = c.user_name AND a.openid != ’’ AND b.weixzt = ’2’ AND b.errcode IS NULL AND LOWER(b.ywlxbm) = ’wsla’</select>

再次運行,這次就成功了。查詢出來的每條結果都封裝成 WxTsxxVo,然后在放到 List 集合里面。

總結1.新框架需要多點嘗試,所以寫測試用例就很重要了。2.MyBatis 也許也能像上面一樣,并不需要在主表的實體類里面關聯另外一個實體,不過有機會還是可以試試看的。

到此這篇關于MyBatis-Plus 如何實現連表查詢的示例代碼的文章就介紹到這了,更多相關MyBatis-Plus 連表查詢內容請搜索好吧啦網以前的文章或繼續瀏覽下面的相關文章希望大家以后多多支持好吧啦網!

標簽: Mybatis 數據庫
相關文章:
主站蜘蛛池模板: 铸铝门厂家,别墅大门庭院大门,别墅铸铝门铜门[十大品牌厂家]军强门业 | 齿轮减速机电机一体机_齿轮减速箱加电机一体化-德国BOSERL蜗轮蜗杆减速机电机生产厂家 | 工业淬火油烟净化器,北京油烟净化器厂家,热处理油烟净化器-北京众鑫百科 | 实验室装修_实验室设计_实验室规划设计- 上海广建净化工程公司 | CTAB,表面活性剂1631溴型(十六烷基三甲基溴化铵)-上海升纬化工原料有限公司 | 软膜天花_软膜灯箱_首选乐创品牌_一站式天花软膜材料供应商! | 精密线材测试仪-电线电缆检测仪-苏州欣硕电子科技有限公司 | 恒温水槽与水浴锅-上海熙浩实业有限公司| 非标压力容器_碳钢储罐_不锈钢_搪玻璃反应釜厂家-山东首丰智能环保装备有限公司 | 搜木网 - 木业全产业链交易平台,免费搜货、低价买货! | 凝胶成像仪,化学发光凝胶成像系统,凝胶成像分析系统-上海培清科技有限公司 | 六维力传感器_六分量力传感器_模腔压力传感器-南京数智微传感科技有限公司 | 光栅尺厂家_数显表维修-苏州泽升精密机械 | 欧美日韩国产一区二区三区不_久久久久国产精品无码不卡_亚洲欧洲美洲无码精品AV_精品一区美女视频_日韩黄色性爱一级视频_日本五十路人妻斩_国产99视频免费精品是看4_亚洲中文字幕无码一二三四区_国产小萍萍挤奶喷奶水_亚洲另类精品无码在线一区 | 骨密度检测仪_骨密度分析仪_骨密度仪_动脉硬化检测仪专业生产厂家【品源医疗】 | 双能x射线骨密度检测仪_dxa骨密度仪_双能x线骨密度仪_品牌厂家【品源医疗】 | 废旧物资回收公司_广州废旧设备回收_报废设备物资回收-益美工厂设备回收公司 | 河南不锈钢水箱_地埋水箱_镀锌板水箱_消防水箱厂家-河南联固供水设备有限公司 | 渗透仪-直剪仪-三轴仪|苏州昱创百科| 深圳富泰鑫五金_五金冲压件加工_五金配件加工_精密零件加工厂 | 膏方加工_丸剂贴牌_膏滋代加工_湖北康瑞生物科技有限公司 | 深圳货架厂_仓库货架公司_重型仓储货架_线棒货架批发-深圳市诺普泰仓储设备有限公司 | 本安接线盒-本安电路用接线盒-本安分线盒-矿用电话接线盒-JHH生产厂家-宁波龙亿电子科技有限公司 | 120kv/2mA直流高压发生器-60kv/2mA-30kva/50kv工频耐压试验装置-旭明电工 | MVR蒸发器厂家-多效蒸发器-工业废水蒸发器厂家-康景辉集团官网 | 电子巡更系统-巡检管理系统-智能巡检【金万码】 | 山东太阳能路灯厂家-庭院灯生产厂家-济南晟启灯饰有限公司 | 钢托盘,铁托盘,钢制托盘,镀锌托盘,饲料托盘,钢托盘制造商-南京飞天金属13260753852 | 立式矫直机_卧式矫直机-无锡金矫机械制造有限公司 | 信阳市建筑勘察设计研究院有限公司 | 暖气片十大品牌厂家_铜铝复合暖气片厂家_暖气片什么牌子好_欣鑫达散热器 | 高压贴片电容|贴片安规电容|三端滤波器|风华电容代理南京南山 | 深圳富泰鑫五金_五金冲压件加工_五金配件加工_精密零件加工厂 | 砂尘试验箱_淋雨试验房_冰水冲击试验箱_IPX9K淋雨试验箱_广州岳信试验设备有限公司 | 杰福伦_磁致伸缩位移传感器_线性位移传感器-意大利GEFRAN杰福伦-河南赉威液压科技有限公司 | 气动绞车,山东气动绞车,气动绞车厂家-烟台博海石油机械有限公司 气动隔膜泵厂家-温州永嘉定远泵阀有限公司 | 缠绕机|缠绕膜包装机|缠绕包装机-上海晏陵智能设备有限公司 | 吹塑加工_大型吹塑加工_滚塑代加工-莱力奇吹塑加工有限公司 | 培训中心-翰香原香酥板栗饼加盟店总部-正宗板栗酥饼技术 | 质检报告_CE认证_FCC认证_SRRC认证_PSE认证_第三方检测机构-深圳市环测威检测技术有限公司 | 石家庄律师_石家庄刑事辩护律师_石家庄取保候审-河北万垚律师事务所 |