简单介绍:

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. 1 DemoExample example=new DemoExample();
  2. 2
  3. 3 DemoExample.Criteria criteria1=example.createCriteria();
  4. 4 criteria1.andAEqualTo(?).andBEqualTo(?);
  5. 5
  6. 6 DemoExample.Criteria criteria2=example.createCriteria();
  7. 7 criteria2.andAEqualTo(?).andCEqualTo(?);
  8. 8
  9. 9 example.or(criteria2);
  10. 10
  11. 11 SqlSession sqlSession = MyBatisUtil.openSession();
  12. 12 DemoMapper m = sqlSession.getMapper(DemoMapper.class);
  13. 13 m.countByExample(example);
  14. 14 //生成的sql语句
  15. 15 select count(*) from demo WHERE ( a = ? and b = ? ) or ( a = ? and c = ? )

写法2:

  1. 1 DemoExample example=new DemoExample();
  2. 2
  3. 3 example.or().andAEqualTo(?).andBEqualTo(?);
  4. 4 example.or().andAEqualTo(?).andCEqualTo(?);
  5. 5
  6. 6 SqlSession sqlSession = MyBatisUtil.openSession();
  7. 7 DemoMapper m = sqlSession.getMapper(DemoMapper.class);
  8. 8 m.countByExample(example);
  9. 9 //生成的sql语句
  10. 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. 1 public Criteria andOrDemo(String value){
  2. 2 addCriterion("(b = \""+value+"\" or c = \""+value+"\")");
  3. 3 return (Criteria) this;
  4. 4 }

DemoAction.java

  1. 1 DemoExample example=new DemoExample();
  2. 2 Criteria criteria = example.createCriteria();
  3. 3 criteria.andAEqualTo(?).andOrDemo(?);
  4. 4
  5. 5 SqlSession sqlSession = MyBatisUtil.openSession();
  6. 6 DemoMapper m = sqlSession.getMapper(DemoMapper.class);
  7. 7 m.countByExample(example);
  8. 8 //生成的sql语句
  9. 9 select count(*) from demo WHERE ( a = ? and ( b = ? or c = ? ))

MyBatis Generator 生成的example 如何使用 and or 简单混合查询的更多相关文章

  1. MyBatis - MyBatis Generator 生成的example 如何使用 and or 简单混合查询

    简单介绍: Criteria,包含一个Cretiron的集合,每一个Criteria对象内包含的Cretiron之间是由AND连接的,是逻辑与的关系. oredCriteria,Example内有一个 ...

  2. mybatis Generator生成代码及使用方式

    本文原创,转载请注明:http://www.cnblogs.com/fengzheng/p/5889312.html 为什么要有mybatis mybatis 是一个 Java 的 ORM 框架,OR ...

  3. Maven下用MyBatis Generator生成文件

    使用Maven命令用MyBatis Generator生成MyBatis的文件步骤如下: 1.在mop文件内添加plugin <build> <finalName>KenShr ...

  4. MyBatis Generator生成DAO——序列化

    MyBatis Generator生成DAO 的时候,生成的类都是没有序列化的. 还以为要手工加入(開始是手工加入的),今天遇到分页的问题,才发现生成的时候能够加入插件. 既然分页能够有插件.序列化是 ...

  5. 利用org.mybatis.generator生成实体类

    springboot+maven+mybatis+mysql 利用org.mybatis.generator生成实体类 1.添加pom依赖:   2.编写generatorConfig.xml文件 ( ...

  6. MyBatis Generator 生成的example 使用 and or 简单混合查询

    MyBatis Generator 生成的example 使用 and or 简单混合查询 参考博客:https://www.cnblogs.com/kangping/p/6001519.html 简 ...

  7. 【记录】Mybatis Generator生成数据对象Date/TimeStamp 查询时间格式化

    Mybatis Generator是很好的工具帮助我们生成表映射关联代码,最近博主遇到一个问题,找了很久才解决, 就是用Mybatis Generator生成实体类的时候,Date 时间无法格式化输出 ...

  8. 取代 Mybatis Generator,这款代码生成神器配置更简单,开发效率更高!

    作为一名 Java 后端开发,日常工作中免不了要生成数据库表对应的持久化对象 PO,操作数据库的接口 DAO,以及 CRUD 的 XML,也就是 mapper. Mybatis Generator 是 ...

  9. Mybatis Generator生成工具配置文件详解

    <?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE generatorConfiguration ...

随机推荐

  1. python josn转换方法-字典

    python_json常用的方法 1. 什么是JSON? JSON 可以将 JavaScript 对象中表示的一组数据转换为字符串,然后就可以在函数之间轻松地传递这个字符串,或者在异步应用程序中将字符 ...

  2. python day 06 作业

  3. 2017ICPC南宁赛区网络赛 Minimum Distance in a Star Graph (bfs)

    In this problem, we will define a graph called star graph, and the question is to find the minimum d ...

  4. idea 中新建Servlet

    本文转载自 :itellij idea创建javaWeb以及Servlet简单实现  一.创建并设置javaweb工程 1.创建javaweb工程File --> New --> Proj ...

  5. Java中的IO流大体介绍

    由于Java中的IO流是在是知识点繁多,所以我大约花了1周的时间将其整理起来.但是整理起来后并不是将完事了,我还是要分字节流和字符流来讲述.然后字节流和字符流中还有是否带有缓冲流. 讲述完IO流后我将 ...

  6. galera cluster,mysql配置wsrep_notify_cmd参数,增加邮件告警

    vi /usr/local/sunlight/wsrep_notify_cmd.sh chown mysql:mysql  /usr/local/sunlight/wsrep_notify_cmd.s ...

  7. 从boost到Adaboost再到GBRT-GBDT-MART

    本文是要配合<统计学习方法>才能看懂的,因为中间有些符号和定义是直接使用书本中的 先弄明白以下三个公式: 1)Boost(提升法)=加法模型(即基函数的线性组合)+前向分步算法+损失函数 ...

  8. P2261 [CQOI2007]余数求和 (数论)

    题目链接:传送门 题目: 题目背景 数学题,无背景 题目描述 给出正整数n和k,计算G(n, k)=k mod + k mod + k mod + … + k mod n的值,其中k mod i表示k ...

  9. mysql设置更改root密码、mysql服务器的连接、mysql常用命令

     1.设置更改root密码 查看mysql 启动与否,若没启动就运行:/usr/local/mysql56/bin/mysqlps aux |grep mysql  或 netstat -tulnp ...

  10. Hive错误:User root is not allowed to impersonate anonymous

    修改hadoop 配置文件 etc/hadoop/core-site.xml,加入如下配置项: <property> <name>hadoop.proxyuser.root.h ...