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

网站根目录权限设置wordpress背景设置

网站根目录权限设置,wordpress背景设置,网站建设与维护服务器,wordpress tag页面优化在项目中我们经常会遇到这种需求: 根据一组 ID 查询数据库,并返回指定字段列表。 我在写代码的时候,遇到了一个典型的坑,分享出来给大家。一、问题背景我的代码是这样写的(查询项目表的负责人信息)&#xf…

在项目中我们经常会遇到这种需求:
根据一组 ID 查询数据库,并返回指定字段列表。
我在写代码的时候,遇到了一个典型的坑,分享出来给大家。

一、问题背景

我的代码是这样写的(查询项目表的负责人信息):

@PostMapping("/getOwnerInfoList")
public Result getOwnerInfoList(@RequestBody List<Integer> pcIds) {
List<Map<String, Object>> result = pmPcService.listObjs(
new LambdaQueryWrapper<PmPc>()
.select(PmPc::getPcId, PmPc::getOwnerUserId, PmPc::getDocumentCode)
.in(PmPc::getPcId, pcIds),
pc -> {
PmPc p = (PmPc) pc; // 👈 报错点
Map<String, Object> map = new HashMap<>();
map.put("pcId", p.getPcId());
map.put("ownerUserId", p.getOwnerUserId());
map.put("documentCode", p.getDocumentCode());
return map;
}
);
return R.ok(result);
}

结果运行时直接报错:

java.lang.ClassCastException: java.lang.Integer cannot be cast to com.kakarote.pm.entity.PO.PmPc

二、原因分析

问题的关键在于 listObjs 方法的返回值

listObjs 的官方说明是:

查询并返回对象集合,默认只会返回查询结果的 第一列

也就是说,如果你 select 了三列(pcId, ownerUserId, documentCode),listObjs 默认只返回第一列 pcId
所以 pc 其实是 Integer,你强转成 PmPc 就会报 ClassCastException

如果你写了 resultHandler 回调,查询多列时返回的是 Object[],而不是实体对象。

三、正确的解决方案

 方式一:直接用 list

最简单的方式就是不用 listObjs,而是用 list,这样返回的就是实体对象

List<PmPc> list = pmPcService.list(new LambdaQueryWrapper<PmPc>().select(PmPc::getPcId, PmPc::getOwnerUserId, PmPc::getDocumentCode).in(PmPc::getPcId, pcIds)
);List<Map<String, Object>> result = list.stream().map(p -> {Map<String, Object> map = new HashMap<>();map.put("pcId", p.getPcId());map.put("ownerUserId", p.getOwnerUserId());map.put("documentCode", p.getDocumentCode());return map;
}).collect(Collectors.toList());return R.ok(result);

方式二:继续用 listObjs

如果一定要用 listObjs,正确写法如下:

List<Map<String, Object>> result = pmPcService.listObjs(new LambdaQueryWrapper<PmPc>().select(PmPc::getPcId, PmPc::getOwnerUserId, PmPc::getDocumentCode).in(PmPc::getPcId, pcIds),obj -> {Object[] arr = (Object[]) obj;  // listObjs 查询多列时返回 Object[]Map<String, Object> map = new HashMap<>();map.put("pcId", arr[0]);map.put("ownerUserId", arr[1]);map.put("documentCode", arr[2]);return map;}
);

四、总结

  • listObjs 默认只返回第一列,别以为它能直接返回实体

  • 如果你需要实体对象,用 list 更直观。

  • 如果你需要自定义对象,用 listObjs + Object[] 来处理。

💡 推荐:
如果业务中经常要查多列 → 用 list
如果只查单列(比如只查 id 列表) → 用 listObjs

http://www.dtcms.com/a/558824.html

相关文章:

  • 计算机操作系统:与设备无关的I/O软件
  • 怎么做一个公司网站广州装修公司哪家好
  • 百度网站优化升上去营销策略ppt模板
  • 仓颉语言实战:无重复字符的最长子串工具库
  • pg_stat 视图介绍
  • 游戏网站cms网站做好了前端 后端怎么做
  • 青岛住房和城乡建设厅网站个人注册域名和公司注册域名区别
  • 京东e卡 滑块分析
  • 嘉兴制作网站深圳网站建设最专业的
  • 网站打开速度慢 如何优化做网站收会员费
  • 网站制作公司网址wordpress 无刷新翻页
  • 临汾网站建设 吕梁网站建设郑州新闻最新消息
  • 网站开发学些什么软件电商平台是干什么的
  • 宜城网站定制seo推广计划
  • 合川建网站网站建设_seo技术支持
  • 广东住房和城乡建设部网站alexa排名助手
  • 做网站的电话江苏seo培训
  • 网站标签怎么做跳转重庆seo排名软件
  • 外贸网站建设制作com域名注册查询
  • 北京做网站制作的公司哪家好做商城网站公司吗
  • 苏州住房与城乡建设部网站成都网站推广经理
  • 邯郸建设网站做的比较好的车载嗨曲网站
  • QCAD,一款好用的2D CAD绘图工具
  • 广宁县住房建设局网站ui培训怎么样
  • 关于做ppt的网站有哪些内容吗dedecms织梦系统网站防会员注册机
  • 微商城和小程序区别正规seo排名外包
  • 内网穿透方案-nps
  • 青岛找网站建设公司哪家好网站建设公司哪家好?该如何选择
  • 哪个网站可以接广告做wordpress获取自定义字段值
  • 兰州网站排名哪家公司好网址免费生成app