//ServiceImpl
public PageResult<CispBookingRecordInfoResult> page(CispBookingRecordInfoParam cispBookingRecordInfoParam) {
QueryWrapper<CispBookingRecordInfoParam> queryWrapper = new QueryWrapper<>();
if (ObjectUtil.isNotNull(cispBookingRecordInfoParam)) {
if (ObjectUtil.isNotEmpty(cispBookingRecordInfoParam.getSearchBeginTime())) {
queryWrapper.ge(ObjectUtil.isNotEmpty(cispBookingRecordInfoParam.getSearchBeginTime()), "record.flight_date", cispBookingRecordInfoParam.getSearchBeginTime());
}
if (ObjectUtil.isNotEmpty(cispBookingRecordInfoParam.getSearchEndTime())) {
queryWrapper.le(ObjectUtil.isNotEmpty(cispBookingRecordInfoParam.getSearchEndTime()), "record.flight_date", cispBookingRecordInfoParam.getSearchEndTime());
}
if (ObjectUtil.isNotEmpty(cispBookingRecordInfoParam.getFlightNo())) {
queryWrapper.like(ObjectUtil.isNotEmpty(cispBookingRecordInfoParam.getFlightNo()), "record.flight_no", cispBookingRecordInfoParam.getFlightNo());
}
if (ObjectUtil.isNotEmpty(cispBookingRecordInfoParam.getFlightDep())) {
queryWrapper.eq(ObjectUtil.isNotEmpty(cispBookingRecordInfoParam.getFlightDep()), "record.flight_dep", cispBookingRecordInfoParam.getFlightDep());
}
if (ObjectUtil.isNotEmpty(cispBookingRecordInfoParam.getFlightDest())) {
queryWrapper.eq(ObjectUtil.isNotEmpty(cispBookingRecordInfoParam.getFlightDest()), "record.flight_dest", cispBookingRecordInfoParam.getFlightDest());
}
if (ObjectUtil.isNotEmpty(cispBookingRecordInfoParam.getFlightTransit())) {
queryWrapper.eq(ObjectUtil.isNotEmpty(cispBookingRecordInfoParam.getFlightTransit()), "record.flight_transit", cispBookingRecordInfoParam.getFlightTransit());
}
if (ObjectUtil.isNotEmpty(cispBookingRecordInfoParam.getApplyBy())) {
queryWrapper.eq(ObjectUtil.isNotEmpty(cispBookingRecordInfoParam.getApplyBy()), "approval.apply_by", cispBookingRecordInfoParam.getApplyBy());
}
if (ObjectUtil.isNotEmpty(cispBookingRecordInfoParam.getBookingStatus())) {
queryWrapper.eq(ObjectUtil.isNotEmpty(cispBookingRecordInfoParam.getBookingStatus()), "approval.booking_status", cispBookingRecordInfoParam.getBookingStatus());
}
}
return new PageResult<>(this.baseMapper.recordInfoPage(PageFactory.defaultPage(), queryWrapper));
}
//Mapper
Page<CispBookingRecordInfoResult> recordInfoPage(@Param("page") Page<Object> defaultPage,@Param(Constants.WRAPPER) QueryWrapper<CispBookingRecordInfoParam> queryWrapper);
<select id="recordInfoPage" resultType="com.yuetong.base.record.result.CispBookingRecordInfoResult">
select
record.*,
approval.*
from cisp_booking_record_info record
left join cisp_booking_approval approval on record.id = approval.booking_id
${ew.customSqlSegment}
</select>
1.实现类里的QueryWrapper泛型使用2表关联的一个类,这样所有的查询字段都能获取到
2.mapper里的注解使用 Constants.WRAPPER,是组件内置的一个对象:
package com.baomidou.mybatisplus.core.toolkit;
public interface Constants extends StringPool, Serializable {
//......
/**
* wrapper 类
*/
String WRAPPER = "ew";
//......
}
3.最后xml的写法就是使用
${ew.customSqlSegment}来带入实现类里查询的条件