话题
国庆前一天上班,想快点下班。还是撸起袖子干点正事。提前祝兄弟们国庆快乐。
前言
去年开始写了后端,发现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);