我是靠谱客的博主 稳重枕头,最近开发中收集的这篇文章主要介绍mybatis plus合并两个wrapper,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.baomidou.mybatisplus.core.toolkit.Constants;
import com.guotie.mdc.base.po.datumdefect.DatumDefectPO;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;
import org.apache.ibatis.annotations.Select;
import java.util.List;
/**
* @author liaoz
*/
@Mapper
public interface DatumDefectDao extends BaseMapper<DatumDefectPO> {
/**
* 查询未生成基准报警的基准缺陷
*
* @param frameTable 关联表 可能是 data_alarm_frame_w data_alarm_frame_g data_alarm_frame_s
*/
@Select("SELECT d.* FROM e01d d LEFT JOIN ( " +
"SELECT f.datum_defect_id FROM ${frameTable} f LEFT JOIN ${alarmTable} a ON f.alarm_id = a.id ${ew.customSqlSegment} " +
") as fa ON fa.datum_defect_id = d.f01 ${sql}")
List<DatumDefectPO> selectUnMark(@Param("frameTable") String frameTable, @Param("alarmTable") String alarmTable, @Param(Constants.WRAPPER) QueryWrapper<?> dataWrapper, @Param("sql") String sql);
}

QueryWrapper<DatumDefectPO> wrapper = new QueryWrapper<>();
rangeFrameWrapper(wrapper, query);
rangeAlarmWrapper(wrapper, query);
QueryWrapper<DatumDefectPO> dWrapper = new QueryWrapper<>();
rangeUnMarkWrapper(dWrapper, query);
dWrapper.isNull(FA_HEAD + "datum_defect_id");
//warn: 此处骚操作
作用为将两个wrapper合并
String dSql = StrUtil.replace(dWrapper.getCustomSqlSegment(), "ew.paramNameValuePairs.", "ew.paramNameValuePairs._");
Map<String, Object> map = wrapper.getParamNameValuePairs();
dWrapper.getParamNameValuePairs().forEach((key, value) -> map.put("_" + key, value));
String domainStr = "w";
List<DatumDefectPO> pos = datumDefectDao.selectUnMark("data_alarm_frame_" + domainStr, "data_alarm_" + domainStr, wrapper, dSql);

最后

以上就是稳重枕头为你收集整理的mybatis plus合并两个wrapper的全部内容,希望文章能够帮你解决mybatis plus合并两个wrapper所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(34)

评论列表共有 0 条评论

立即
投稿
返回
顶部