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);

浙公网安备 33010602011771号