当前位置: 首页 > news >正文

Mybatis中字段返回值映射问题

需求说明:
返回值列表扩展字段值,不改变原有代码的基础上,增加返回值

编写类VO: 

public class RegionVO extends Region {//点位数量private Integer nodeCount;public Integer getNodeCount() {return nodeCount;}public void setNodeCount(Integer nodeCount) {this.nodeCount = nodeCount;}
}

 mapper.xml

<select id="selectRegionVOList" resultType="com.dkd.manage.vo.RegionVO">SELECTr.*,count( n.id ) AS node_countFROMtb_region rLEFT JOIN tb_node n ON r.id = n.region_idGROUP BYr.id<where><if test="regionName != null  and regionName != ''"> and region_name like concat('%', #{regionName}, '%')</if></where></select>

controller类:

@RestController
@RequestMapping("/manage/region")
public class RegionController extends BaseController
{@Autowiredprivate IRegionService regionService;/*** 查询区域管理列表*/@PreAuthorize("@ss.hasPermi('manage:region:list')")@GetMapping("/list")public TableDataInfo list(Region region){startPage();List<RegionVO> voList = regionService.selectRegionVOList(region);return getDataTable(voList);}
}

浏览器测试结果:

正常情况下也是可以的,但是当时测试的时候,始终缺少字段nodeCount ;

在这里我们可以换种方案:

修改mapper.xml文件

  <resultMap id="RegionVOResult" type="com.dkd.manage.vo.RegionVO"><result property="id"    column="id"    /><result property="regionName"    column="region_name"    /><result property="remark"    column="remark"    /><result property="createBy"    column="create_by"    /><result property="updateBy"    column="update_by"    /><result property="createTime"    column="create_time"    /><result property="updateTime"    column="update_time"    /><result property="nodeCount"    column="node_count"    /></resultMap><select id="selectRegionVOList" resultMap="RegionVOResult">SELECTr.*,count( n.id ) AS node_countFROMtb_region rLEFT JOIN tb_node n ON r.id = n.region_idGROUP BYr.id<where><if test="regionName != null  and regionName != ''"> and region_name like concat('%', #{regionName}, '%')</if></where></select>

再次运行,效果也是可以的!

扩展SQL: 

SELECTre.id,re.region_name,re.remark,IFNULL( tbc.node_count, 0 ) AS nodeCount,re.create_time 
FROMtb_region reLEFT JOIN ( SELECT region_id, count( 0 ) node_count FROM tb_node GROUP BY region_id ) tbc ON tbc.region_id = re.id SELECTr.*,count( n.id ) AS node_count 
FROMtb_region rLEFT JOIN tb_node n ON r.id = n.region_id 
GROUP BYr.id


http://www.mrgr.cn/news/38490.html

相关文章:

  • Kubernetes学习路线
  • PCB基础
  • 传奇架设教程:传奇登录器公告窗口如何设置?link.htm网页文件制作教程
  • 备考中考的制胜法宝 —— 全国历年中考真题试卷大全
  • muduo网络库介绍
  • VB.net读写NDEF标签URI智能海报WIFI蓝牙连接
  • OpenCV视频I/O(9)视频采集类VideoCapture之释放与视频捕获相关的所有资源函数release()的使用
  • 【C++】类和对象(类的定义,类域,实例化,this指针)
  • 华为仓颉语言入门(7):深入理解 do-while 循环及其应用
  • 区块链可投会议CCF C--FC 2025 截止10.8 附录用率
  • 【hadoop安装】
  • 软件设计——随手笔记
  • Feign:服务挂了也不会走fallback
  • PY32F002B
  • 「JavaScript深入」彻底搞懂JS原型与原型链
  • 繁体字能申请注册商标吗?
  • 【AIGC】ChatGPT提示词助力自媒体内容创作升级
  • 支付宝远程收款api之小荷包跳转码
  • 黑神话悟空小西天
  • Scrapy入门