Mybatis 包下Weekend 和Example的使用以及区别
Example:
Example example = new Example(User.class);
example.setOrderByClause("create_time desc");
Example.Criteria criteria = example.createCriteria();
criteria.andEqualTo("organId", organId);
userMapper.selectByExample(example);
Weekend:
Weekend<Organ> weekend = Weekend.of(Organ.class);
WeekendCriteria<Organ, Object> criteria = weekend .weekendCriteria();
criteria.andEqualTo(Organ::getParentId, parentId);
weekend.setOrderByClause("id desc");
List<Organ> organList = organService.selectByExample(weekend);
主要区别在于进行:赋予相关sql语句的条件时:
Example使用的是字符串和对应数据的方法;
Weekend使用的是JDK8特性的stream操作,使用双冒号把方法当做参数传到stream内部。
其实在Weekend的使用过程中遇到过bug,目前尚未解决,sql的条件为多个时,如果有null的条件,会遇到badSQL的报错异常。