关于mybatis自动生成的Example类

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连接的,是逻辑或关系

如:

查询条件1a=? 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 )

猜你喜欢

转载自blog.csdn.net/cijiancao/article/details/81013695
今日推荐