在学习天猫三大框架整合时,遇到代码如下
public List list(int cid) {
PropertyExample example =new PropertyExample();
example.createCriteria().andCidEqualTo(cid);
example.setOrderByClause("id desc");
return propertyMapper.selectByExample(example);
}
对这段代码感觉看不懂,百度后发现是逆向工程Mybatis中的条件查询。
逆向工程产生example类,至于逆向工程中的xxxExample.java,这个类是给用户自定义sql是用的。
Example类的成员:
//升序还是降序:字段+空格+asc(desc)
protected String orderByClause;
//去除重复:true是选择不重复记录,false,反之
protected boolean distinct;
//自定义查询条件
protected List<Criteria> oredCriteria;
Criteria:Criteria包含一个Cretiron的集合,每一个Criteria对象内包含的Cretiron之间是由AND连接的,是逻辑与的关系。
oredCriteria:Example内有一个成员叫oredCriteria,是Criteria的集合,就想其名字所预示的一样,这个集合中的Criteria是由OR连接的,是逻辑或关系。oredCriteria就是ORed Criteria。
上述代码的主要意思是自定义查询,所以用到了example类,里面有个Criteria内部类,专门用来封装自定义查询条件的
andCidEqualTo相当于在sql中拼接一个“AND name=Cid”
对上述代码继续总结下来就是如下
第一句是创建辅助对象
第二句是根据cid查询
第三句是根据id倒排序