mybatis 高级查询

首先mapper包

    IPage<OrdersVo> selectOrderList(IPage<OrdersVo> page, @Param(Constants.WRAPPER) Wrapper<Orders> qw);

IPage<OrdersVo> page 分页信息,带上这个参数mybatis自动分页,不需要考虑是vo还是entity的泛型,Page<OrdersVo> page也可以
@Param(Constants.WRAPPER) Wrapper<Orders> qw 是一个querywrapper查询条件构造器


下面是xml查询

<select id="selectOrderList" resultType="top.jilijili.module.pojo.vo.shop.OrdersVo">
        select o.*, u.user_id, u.nickname, u.avatar
        from shop_orders o
                 left join sys_user u on o.user_id = u.user_id
            ${ew.customSqlSegment}

    </select>

form 语句后面是where,mybatis会自动拼接的,resultType可以是resultmap,都可以


最后使用querywrapper做查询条件

 QueryWrapper<Orders> qw = new QueryWrapper<>();
        qw
                .eq(ordersDto.getOrderId() != null, "o.order_id", ordersDto.getOrderId())
                .eq(ordersDto.getUserId() != null, "o.user_id", ordersDto.getUserId())
                .eq(ordersDto.getOrderStatus() != null, "o.order_status", ordersDto.getOrderStatus())

                .between(ordersDto.getMax() != null && ordersDto.getMin() != null,
                        "o.total_amount", ordersDto.getMin(), ordersDto.getMax()
                )
                .between(ordersDto.getCreatedTime() != null && ordersDto.getComparisonTime() != null,
                        "o.created_time", ordersDto.getCreatedTime(), ordersDto.getComparisonTime()
                ).orderByDesc("o.created_time");
        IPage<OrdersVo> page = new Page<>(ordersDto.getPage(), ordersDto.getSize());

        xxxMapper.selectOrderList(page, qw);
posted @ 2023-10-17 07:53  Amani_Bey  阅读(45)  评论(0)    收藏  举报