Example
Example类生成是由处理where字句的,及根据自己的需求动态生成sql where字句。换句话说,Example类可以用来生成一个几乎无限的where子句,我们想加添加直接用这个就可以,不用我们自己再修改mapper文件,添加或者修改sql语句了。
Example类包含一个内部静态类 Criteria ,包含一个用 anded 组合在where子句中的条件列表,包含一个 List 属性,所有内部类Criteria中的子句会用 ored组合在一起, 使用不同属性的 Criteria 类允许您生成无限类型的where子句。
创建 Criteria 对象 可以使用Example类中的 createCriteria() 或者 or() 。
实例解析
CollegeExample collegeExample = new CollegeExample();
CollegeExample.Criteria criteria = collegeExample.createCriteria();
criteria.andCollegeidIsNotNull();
return collegeMapper.selectByExample(collegeExample);
1.先创建一个example
2.然后创建criteria对象
3.添加条件
4.调用select语句
上面sql语句翻译一下:select * from * where collegeid is not null
请记住这里只适用于有where的sql语句
*补充:
可以看到,如上的写法:where条件只有与(and),而没有或(or),原因如下
Criteria,包含一个Cretiron的集合,每一个Criteria对象内包含的Cretiron之间是由AND连接的,是逻辑与的关系。
oredCriteria,Example内有一个成员叫oredCriteria,是Criteria的集合,就想其名字所预示的一样,这个集合中的Criteria是由OR连接的,是逻辑或关系
如:
查询条件1:a=? and (b=? or c=?) 不支持
查询条件2:(a=? And b=?) or (a=? And c=?) 支持
如果我们要得到1的效果,就要改写为2的形式:
Example example=new Example();
Example.Criteria criteria1=example.createCriteria();
criteria1.andAEqualTo(1).andBEqualTo(2);
Example.Criteria criteria2=example.createCriteria();
criteria2.andAEqualTo(1).andCEqualTo(3);
example.or(criteria2);
//生成的sql语句
select count(*) from demo WHERE ( a = 1 and b = 2 ) or ( a = 1 and c = 3 )