Mybatis-plus实现分页查询

128 阅读1分钟

一、添加配置类

import com.baomidou.mybatisplus.extension.plugins.inner.PaginationInnerInterceptor;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;

@Configuration
public class MybatisPlusConfig {
    
    @Bean
    public MybatisPlusInterceptor mybatisPlusInterceptor() {
       MybatisPlusInterceptor interceptor = new MybatisPlusInterceptor();
       PaginationInnerInterceptor paginationInnerInterceptor = new PaginationInnerInterceptor();
       paginationInnerInterceptor.setDbType(DbType.MYSQL);
       paginationInnerInterceptor.setOverflow(true);
       interceptor.addInnerInterceptor(paginationInnerInterceptor);
       OptimisticLockerInnerInterceptor optimisticLockerInnerInterceptor = new OptimisticLockerInnerInterceptor();
       interceptor.addInnerInterceptor(optimisticLockerInnerInterceptor);
       return interceptor;
    }
}

二、实现类

public interface OrderDetailMapper extends BaseMapper<OrderDetailPO> {
    
//  List<OrderDetailDTO> getOrderDetail(Map map);
    
    IPage<OrderDetailDTO> pageOrderDetail(IPage<OrderDetailDTO> page, @Param("req") Map map);

}
@Service
public class OrderDetailServiceImpl extends ServiceImpl<OrderDetailMapper, OrderDetailPO> implements OrderDetailService {
    
    @Override
    public BasePageRsp<OrderDetailDTO> pageOrderDetail(Map req) {
       Page<OrderDetailDTO> page = new Page<>(1, 10);
       page = (Page<OrderDetailDTO>) baseMapper.pageOrderDetail(page, req);
       return BasePageRsp.valueOf(page);
    }
}
<select id="pageOrderDetail" resultType="org.ethh.dal.dto.OrderDetailDTO">
    SELECT t1.CreateTime AS orderTime, OrderNo AS orderNumber, t1.UpdateTime AS lastUpdateTime, t1.BatchNo AS tradeNumber, t1.ContractCode AS product, t1.OrderLevel AS orderLevel, t1.AlgoStatus AS algoStatus, t1.OrderType AS direction, NULL AS openCloseDirection, OrderPrice AS averagePrice,
    CASE
    WHEN OrderQty = FilledQty THEN '完全成交'
    WHEN OrderQty = CancelledQty THEN '已撤单'
    ELSE '部分成交'
    END AS orderStatus, Bid AS buyPrice, Ask AS sellPrice, NULL AS marketPrice,
    CASE
    WHEN BidAskFlag = '1' THEN OrderPrice
    ELSE ''
    END AS buyOrderPrice,
    CASE
    WHEN BidAskFlag = '2' THEN OrderPrice
    ELSE ''
    END AS sellOrderPrice, NULL AS bestMidPrice, NULL AS bestSpread, NULL AS targetInventory, NULL AS actualInventory, Gamma AS toleranceFactor, Volatility AS volatility, Kappa AS orderBookLiquidity
    FROM order_detail t1
    where 1=1
    <if test="req.startTime != null">
        AND t1.CreateTime >= #{req.startTime}
    </if>
    <if test="req.endTime != null">
        <![CDATA[
            AND t1.CreateTime <= #{req.endTime}
             ]]>
    </if>
</select>