MyBatis Generator 生成的example 如何使用 and or 简单混合查询
2024-10-09 16:03:13
简单介绍:
Criteria,包含一个Cretiron的集合,每一个Criteria对象内包含的Cretiron之间是由AND连接的,是逻辑与的关系。
oredCriteria,Example内有一个成员叫oredCriteria,是Criteria的集合,就想其名字所预示的一样,这个集合中的Criteria是由OR连接的,是逻辑或关系。oredCriteria就是ORed Criteria。
or()方法,会产生一个新的Criteria对象,添加到oredCriteria中,并返回这个Criteria对象,从而可以链式表达,为其添加Criterion。
查询条件1:a=? and (b=? or c=?) 不支持
查询条件2:(a=? And b=?) or (a=? And c=?) 支持
写法1:
1 DemoExample example=new DemoExample();
2
3 DemoExample.Criteria criteria1=example.createCriteria();
4 criteria1.andAEqualTo(?).andBEqualTo(?);
5
6 DemoExample.Criteria criteria2=example.createCriteria();
7 criteria2.andAEqualTo(?).andCEqualTo(?);
8
9 example.or(criteria2);
10
11 SqlSession sqlSession = MyBatisUtil.openSession();
12 DemoMapper m = sqlSession.getMapper(DemoMapper.class);
13 m.countByExample(example);
14 //生成的sql语句
15 select count(*) from demo WHERE ( a = ? and b = ? ) or ( a = ? and c = ? )
写法2:
1 DemoExample example=new DemoExample();
2
3 example.or().andAEqualTo(?).andBEqualTo(?);
4 example.or().andAEqualTo(?).andCEqualTo(?);
5
6 SqlSession sqlSession = MyBatisUtil.openSession();
7 DemoMapper m = sqlSession.getMapper(DemoMapper.class);
8 m.countByExample(example);
9 //生成的sql语句
10 select count(*) from demo WHERE ( a = ? and b = ? ) or ( a = ? and c = ? )
查询条件3:(a=? and (b=? or c=?)) 支持
假设两个搜索项,A项搜索,可搜索b,c(bc或关系),B项搜索可搜索a,B项搜索与A项搜索是与关系。
修改DemoExample.java文件,新增方法
1 public Criteria andOrDemo(String value){
2 addCriterion("(b = \""+value+"\" or c = \""+value+"\")");
3 return (Criteria) this;
4 }
DemoAction.java
1 DemoExample example=new DemoExample();
2 Criteria criteria = example.createCriteria();
3 criteria.andAEqualTo(?).andOrDemo(?);
4
5 SqlSession sqlSession = MyBatisUtil.openSession();
6 DemoMapper m = sqlSession.getMapper(DemoMapper.class);
7 m.countByExample(example);
8 //生成的sql语句
9 select count(*) from demo WHERE ( a = ? and ( b = ? or c = ? ))
最新文章
- c++多重继承
- cout输出控制——位数和精度控制
- 实战之中兴ZXHN F460光猫破解超级密码+开启无线路由功能
- 类加载器ClassLoader之jar包隔离
- laravel----------------自动生成模型,控制器,视图的操作步骤。
- SQL Server里等待统计(Wait Statistics)介绍
- 在桌面chrome中调试android设备中的web页面
- 【转】android UI进阶之自定义组合控件
- Javascript中typeof instanceof constructor的区别
- hdu 4061 A Card Game
- jquery ashx
- PAT (Advanced Level) 1029. Median (25)
- jquery的2.0.3版本源码系列(5):349-817行,extend添加的工具方法
- SpringBoot中@ManyToMany的坑
- C#基础加强(6)之引用相等与运算符重载
- synchronized和ReentrantLock的区别
- JavaAndroid项目结构
- 几个常用dos网络命令
- 17秋 软件工程 第六次作业 Beta冲刺 Scrum4
- [py]django表单不清空实现的2种方法