概述
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所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复