Wrapper使用示例

以这条SQL做演示:

SELECT id,order_msg FROM my_mysql.order WHERE order_msg = '57x' // x 代表序号
  • QueryWrapper

    QueryWrapper<OrderEntity> queryWrapper = new QueryWrapper<OrderEntity>().select("id","order_msg").eq("order_msg","571");
    orderMapper.selectOne(queryWrapper); // SELECT id,order_msg FROM my_mysql.order WHERE (order_msg = '571')
    
  • LambdaQueryWrapper

    // LambdaQueryWrapper // queryWrapper.lambda() 可以转换成此种 wrapper
    LambdaQueryWrapper<OrderEntity> lambdaQueryWrapper = new LambdaQueryWrapper<OrderEntity>().select(OrderEntity::getId, OrderEntity::getOrderMsg).eq(OrderEntity::getOrderMsg,"572");
    orderMapper.selectOne(lambdaQueryWrapper); // SELECT id,order_msg FROM my_mysql.order WHERE (order_msg = '572')
    
  • QueryChainWrapper

    QueryChainWrapper<OrderEntity> queryChainWrapper = new QueryChainWrapper<>(orderMapper).select("id", "order_msg").eq("order_msg","573");
    queryChainWrapper.one(); // SELECT id,order_msg FROM my_mysql.order WHERE (order_msg = '573')
    
  • LambdaQueryChainWrapper

    LambdaQueryChainWrapper<OrderEntity> lambdaQueryChainWrapper = new LambdaQueryChainWrapper<>(orderMapper).select(OrderEntity::getId, OrderEntity::getOrderMsg).eq(OrderEntity::getOrderMsg,"574");
    lambdaQueryChainWrapper.one(); // SELECT id,order_msg FROM my_mysql.order WHERE (order_msg = '574')
    

总结

  • QueryWrapper 和 lambdaQueryWrapper 需要将 封装的wrapper 提供给 orderMapper,调用orderMapper的方法,才可以使用。

  • QueryChainWrapper 和 LambdaQueryChainWrapper 可以直接链式调用数据执行操作的方法

  • 带 lambda 的 wrapper 可以使用lambda表达式,选择列,设置列值,反之不带lambda的就需要手动指定列名

个人使用总结最佳案例

  • 简单SQL:

    使用此种方式需要注意字段策略 FieldStrategy

    OrderEntity orderQry = new OrderEntity().setDealMsg("575");
    LambdaQueryWrapper<OrderEntity> wrapper = new LambdaQueryWrapper<>(orderQry).select(OrderEntity::getId, OrderEntity::getOrderMsg);
    orderMapper.selectOne(wrapper); // SELECT id,order_msg FROM my_mysql.order WHERE deal_msg='575'
    
  • 复杂SQL,例如嵌套SQL,直接写XML,在本人较长期的使用过程中,通过Java方法写复杂SQL,看起来不直观,且很费劲。

    例如这种情况:

    select * from table_a where a_id in (
    	select b_id from table_b where b_id in (1,2,3)
    )
    

PS

如果帮助到你的话,点个赞鼓励下,欢迎加入我的置顶博客的javaweb交流群,不搞带课推广,让我们一起向诗靠拢。

Logo

为开发者提供学习成长、分享交流、生态实践、资源工具等服务,帮助开发者快速成长。

更多推荐