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交流群,不搞带课推广,让我们一起向诗靠拢。