[新手入门] mybatis Example 特性

2,809 阅读1分钟

话题

国庆前一天上班,想快点下班。还是撸起袖子干点正事。提前祝兄弟们国庆快乐。

前言

去年开始写了后端,发现mybatis的Example在简单的增删改查方面还是很好用的。特此总结一下。希望对新手有帮助。

Example - 新增

  • 场景:订单模块。查询条件:订单号|订单时间|状态|明细|订单名称

简单的增删改业务,不需要涉及查询SQL。直接用Example,Po搞定,上代码 ↓。

    OrderPo po=new OrderPo();
    po.setOrderNo('xxx123456');
    orderMappingMapper.insert(po)

Example - 查询

  • 等同查询 - andEqualTo
    Example example=new Example(OrderPo.class);
    Example.Criteria criteria=example.createCriteria();
    criteria.andEqualTo("orderNo",request.getOrderNo());
    List<OrderPo> list=orderMappingMapper.selectByExample(example);
  • 时间查询 - andGreaterThanOrEqualTo - 大于等于
    criteria.andGreaterThanOrEqualTo("orderTimeStart",request.getOrderTimeStart()); // >=orderTimeStart  
  • 时间查询 - andLessThan - 小于
    criteria.andLessThan("orderTimeEnd",request.getOrderTimeEnd());// <orderTimeEnd
  • 明细 ids in - andIn
    criteria.andIn("recIds",request.getOrderDetails());//相当于sql recIds in(xxx,xxx,xxx)
  • 模糊查询 - andCondition
    String condition =" and orderName like = '%"+request.getOrderName()+"%'";
    criteria.andCondition(condition);
  • 排序 - setOrderByClause
    example.setOrderByClause(" create_time desc ");//时间降序排序

Example - 修改

更新不为空的值

    Example example = new Example(OrderPo.class);
    example.createCriteria().andEqualTo("orderNo", request.getOrderNo());//订单号为request.getOrderNo()
    OrderPo po=new OrderPo();
    po.setModifyTime(new Date());
    po.setModifyUser("admin");
    po.setModifyUserName("admin");
    po.setStatus("1");//已审核
    orderMappingMapper.updateByExampleSelective(po,example);

也可以通过主键更新

    OrderPo po=new OrderPo();
    po.setOrderNo(rquest.getOrderNo());//主键
    po.setModifyTime(new Date());
    po.setModifyUser("admin");
    po.setModifyUserName("admin");
    po.setStatus("1");//已审核
    orderMappingMapper.updateByPrimaryKeySelective(po);

Example - 删除

删除同样可以根据条件删除

    Example example = new Example(OrderPo.class);
    example.createCriteria().andEqualTo("status", "1");//删除已审核的数据
    orderMappingMapper.deleteByExample(po);