项目中需求:把查询到的收货地址按照创建的时间排序展示,且默认地址放在第一位
方法一:使用sql查询进行排序
SELECT * from user_address
WHERE user_id = '1234102578637127681'
ORDER BY is_default DESC ,create_time DESC
但是项目中的page分页方法是封装好的无法更改sql,在不改变原生方法的前提下 实用方法二;
方法二:使用myBitsPlus自动生成的page方法进行指定字段排序
/**
* 分页查询
* @param page 分页对象
* @param userAddress 用户收货地址
* @return
*/
@ApiOperation(value = "分页查询")
@GetMapping("/page")
@ApiLogin
public R getUserAddressPage(Page page, UserAddress userAddress) {
userAddress.setUserId(ThirdSessionHolder.getUserId());
//排序 是否默认
OrderItem orderItemIsDefault = new OrderItem();
orderItemIsDefault.setColumn("is_default");
orderItemIsDefault.setAsc(false);
//排序 创建时间
OrderItem orderItemCreateTime = new OrderItem();
orderItemCreateTime.setColumn("create_time");
orderItemCreateTime.setAsc(false);
List<OrderItem> orderItems = new ArrayList<>();
orderItems.add(orderItemIsDefault);
orderItems.add(orderItemCreateTime);
page.setOrders(orderItems);
//分页对象
Page newPage = userAddressService.page(page, Wrappers.query(userAddress));
return R.ok(newPage);
}
这样就能满足需求了。