简单介绍:

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 = ? ))

写法1:

转载于:https://www.cnblogs.com/kangping/p/6001519.html

MyBatis - MyBatis Generator 生成的example 如何使用 and or 简单混合查询相关推荐

  1. 解决表字段使用关键字导致Mybatis Generator生成代码异常的解决方案

    From: http://blog.itfsw.com/2017/05/23/jiejue-biao-ziduan-shiyong-guanjianzi-daozhi-mybatis-generato ...

  2. mybatis generator使用_SpringBoot整合Mybatis实现自动生成代码 || 附阿里P8独家SpringBoot视频资料...

    MyBatis 是一款优秀的持久层框架,它支持定制化 SQL.存储过程以及高级映射.MyBatis 避免了几乎所有的 JDBC 代码和手动设置参数以及获取结果集. MyBatis 可以使用简单的 XM ...

  3. mybatis oracle生成注释,MyBatis Generator生成Oracle数据库对应实体类时无法获取注释问题...

    最近在利用mybatis generator生成Oracle数据库对应的实体类时发现一个问题,特此记录下. 因为项目使用到了swagger2,所以想在生成实体类时通过表注释和字段注释生成对应的@Api ...

  4. 用mybatis的generator自动生成代码--坑我都走了一遍,后面的同学别踩了

    先说什么是mybatis-generator? mybatis-geneator是一款mybatis自动代码生成工具,可以通过配置,快速生成mapper和xml文件. 步骤一:在pom文件中添加插件配 ...

  5. 如何用MyBatis-Generator自动创建代码(映射生成实体类、DAO接口和Mapping映射文件)

    如何用MyBatis自动生成实体类.DAO接口和Mapping映射文件 引言: 什么是 MyBatis ? MyBatis 是一款优秀的持久层框架,它支持定制化 SQL.存储过程以及高级映射.MyBa ...

  6. IDEA使用mybatis实现generator自动生成MSSQLSERVER数据库表映射

    IDEA使用mybatis实现generator自动生成MSSQLSERVER数据库表映射,generatorConfig.xml文件中配置如下内容: <?xml version="1 ...

  7. IDEA中实现mybatis generator生成

    generatorConfig.xml配置文件 <?xml version="1.0" encoding="UTF-8"?> <!DOCTYP ...

  8. spring boot+mybatis+generator生成domain大小写问题

    之前遇到一个问题,用generator生成数据库对应的domain,以前都是好好的,那天突然生成的domain都是小写的,因为我数据库里是大写的,后来找到解决办法, <table tableNa ...

  9. 实体类dao接口mysql_利用MyBatis生成器自动生成实体类、DAO接口和Mapping映射文件...

    解决问题: 可利用MyBatis生成器自动生成实体类.DAO接口和Mapping映射文件. 测试环境准备: 新建一个mysql数据库,例如mungerzTest. 生成一张主键为自增ID的学生表: C ...

最新文章

  1. R语言绘图设备dev
  2. 虚拟人春节搞事情!先在央视《对话》,又跟李玉刚组团除夕出道
  3. DL之DNN:自定义MultiLayerNet【6*100+ReLU,SGD】对MNIST数据集训练进而比较【多个超参数组合最优化】性能
  4. mysql使用date_format格式化日期
  5. CSS 学习-文本 段落
  6. element table 表格设置max-height 没有出现滚动条,多渲染了一列。
  7. php配置支持mysql解决本地安装wordpress问题
  8. Trust is the most important thing to the team!
  9. 【BZOJ1911】【codevs1318】特别行动队,斜率优化DP
  10. fastdfs删除过期文件_Spring Boot 系列:使用 Spring Boot 集成 FastDFS
  11. 从char到QChar
  12. java中$和 的区别详解_MyBatis中#{}和${}的区别详解
  13. Hibernate配置文件与关联映射介绍
  14. 【转载】大学生必备软件免费自学视频教程,让那些培训班都见鬼去吧
  15. 二阶系统的时间响应及动态性能(时域分析)
  16. 利用模式进行构建第九讲——树形模式
  17. day 05 DQL数据查询语言---连接查询---登堂入室
  18. 数据错误循环冗余检查是什么意思_德尔西曼.交换机是一种什么设备?通过什么方式进行交换?...
  19. 图片加载失败,img触发错误显示默认图片
  20. JavaScript 学习笔记(第三天)

热门文章

  1. 2.Functions and Getting Help
  2. ubuntu服务器创建共享文件夹,Ubuntu samba安装创建共享目录及使用
  3. raft算法mysql主从复制_Etcd raft算法实现原理分析
  4. 计算机中丢失setupxml.dll,Win7电脑安装VideoStudio Pro X6显示丢失SetupXML.dll文件怎么解决...
  5. 威海二职工业机器人专业_工业机器人专业就业前景-山东省好的中专学校
  6. 多线程完成连续打印1-100的数字, 要求一条线程专门打印奇数,另外一条专门用来打印偶数
  7. Java线程面试题 Top 53
  8. leetcode9 回文数
  9. 关于valgrind的安装和内存泄露分析
  10. Python模块(8)-sklearn 简易使用教程