mybatisplus
使用optional做数据拷贝
PhmDevice adds = Optional.ofNullable(bo).map(PhmDevice::new).orElse(null);
使用Spring的bean做拷贝
PhmDevice add = BeanUtil.copyProperties(bo, PhmDevice.class, "name", bo.getName()); //name为省略字段
1使用mybatisplus中遇到问题,主表找不到字段。
报错 can not find lambda cache for this property [pointId] of entity [com.weizu.baseInfo.domain.PhmThreshold]
要在实体表添加@TableField(exist = fasle,value = "point_id")
报错2,主表现在字段不存在使用注解@TableField(exist = false)表示该list不做映射关系
2.使用mybatisplus做一对多查询
//查询主表信息
LambdaQueryWrapper<PhmPoint> lqw = Wrappers.lambdaQuery(); lqw.eq(StringUtils.isNotBlank(bo.getPointNumber()), PhmPoint::getPointNumber, bo.getPointNumber()); lqw.eq(bo.getCreatedTime() != null, PhmPoint::getCreatedTime, bo.getCreatedTime()); Page<PhmPointVo> result = baseMapper.selectVoPage(pageQuery.build(), lqw);
//查询子表数据 for (PhmPointVo e :result.getRecords()) //phmPointVo,phmPoint表中做@TableField(exist = fasle)
{ LambdaQueryWrapper<PhmThreshold> objectLambdaQueryWrapper = Wrappers.lambdaQuery();
objectLambdaQueryWrapper.eq(StringUtils.isNotBlank(e.getPointId()), PhmThreshold::getPointId, e.getPointId()); //主表ID和从表pointID关联eq. PhmThreshold从表字段做映射关系@TableField(exist = fasle,value = "point_id")
List<PhmThreshold> collect = phmThresholdMapper.selectList(objectLambdaQueryWrapper); e.setPhmThresholds(collect);
e.setPhmThresholds(collect);
}
3,使用多表查询时候要在entity中的返回字段中加@TableField(exist=false),这样别的共用实体不会查询该字段,要不会报unknown column “xxx”.@TableField使用在多表中的
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
· C#/.NET/.NET Core优秀项目和框架2025年2月简报
· 什么是nginx的强缓存和协商缓存
· 一文读懂知识蒸馏
· Manus爆火,是硬核还是营销?