mybatis genarator 生成的example

Example类用于构造复杂的筛选条件。

基本概念

  • Criterion

    Criterion是最基本,最底层的Where条件,用于字段级的筛选,feild用于指代字段名字,列举如下:

    只有一个条件,不需要其他参考值
    feild IS NOLL
    feild IS NOT NULL

    与一个参考值进行算数运算
    feild > value
    feild >= value
    feild = value
    feild <> value
    feild <= value
    feild < value

    与一个参考值进行模糊查询,参值中的%,?只能在构造查询条件时手动指定。

    feild LIKE value
    feild NOT LIKE value

    介于两个参考值之间

    feild BETWEEN value AND secondValue

    在或不在一个参考值集合中,item来自于value集合

    feild IN (item,item,item,...)
    feild NOT IN (item,item,item,...)

    MyBatis Generator会为每个字段产生如上的Criterion,如果表的字段比较多,产生的Example类会十分庞大。理论上通过Example类可以构造你想到的任何筛选条件。

  • Criteria

    Criteria包含一个Cretiron的集合,每一个Criteria对象内包含的Cretiron之间是由AND连接的,是逻辑与的关系。

  • oredCriteria

    Example内有一个成员叫oredCriteria,是Criteria的集合,就想其名字所预示的一样,这个集合中的Criteria是由OR连接的,是逻辑或关系。oredCriteria就是ORed Criteria。

用法

示例来自官方文档

其他

Example类的distinct字段用于指定DISTINCT查询。

orderByClause字段用于指定ORDER BY条件,这个条件没有构造方法,直接通过传递字符串值指定。


官方文档介绍

Example类使用说明

Example类指定如何构建一个动态的where子句. 表中的每个non-BLOB列可以被包括在where子句中. 例子是展示此类用法的最好方式.

Example类可以用来生成一个几乎无限的where子句.

Example类包含一个内部静态类 Criteria 包含一个用 anded 组合在where子句中的条件列表. Example类包含一个 List<Criteria> 属性,所有内部类Criteria中的子句会用 ored组合在一起. 使用不同属性的 Criteria 类允许您生成无限类型的where子句.

创建 Criteria 对象 可以使用Example类中的 createCriteria() 或者 or() . 如果 Criteria 对象是用 createCriteria() 创建的,它会自动为 List<Criteria> 属性添加一个 Criteria 对象 - 这使得它更容易写一个简单的where子句, 如果您不需要 or 或者其他几个子句组合的话. 用 or(Criteria criteria) 方法创建 Criteria 对象, 方法里的 criteria 对象会被添加进 Criteria 对象的列表中.

重要 我们推荐您只使用 or() 方法创建 Criteria 对象. 我们相信这种方法使代码更有可读性.

简单查询

这个例子展示了如何用生成后的Example类去生成一个简单的where子句:

  TestTableExample example = new TestTableExample();

  example.createCriteria().andField1EqualTo(5);

作为另一种选择, 下面的方式也是可以的:

  TestTableExample example = new TestTableExample();

  example.or().andField1EqualTo(5);

在上面的例子中, 动态生成的where子句是:

  where field1 = 5

复杂查询

下面的例子展示了如何用生成后的Example类去生成一个复杂的where子句 (用到了 JSE 5.0 的泛型):

  TestTableExample example = new TestTableExample();

  example.or()
    .andField1EqualTo(5)
    .andField2IsNull();

  example.or()
    .andField3NotEqualTo(9)
    .andField4IsNotNull();

  List<Integer> field5Values = new ArrayList<Integer>();
  field5Values.add(8);
  field5Values.add(11);
  field5Values.add(14);
  field5Values.add(22);

  example.or()
    .andField5In(field5Values);

  example.or()
    .andField6Between(3, 7);

在上面的例子中, 动态生成的where子句是:

  where (field1 = 5 and field2 is null)
     or (field3 <> 9 and field4 is not null)
     or (field5 in (8, 11, 14, 22))
     or (field6 between 3 and 7)

将会返回满足这些条件的记录结果.

去重复查询

您可以在所有的Example类中调用 setDistinct(true) 方法进行强制去重复查询.

Criteria类

Criteria 内部类的每个属性都包含 andXXX 方法,以及如下的标准的SQL查询方法:

  • IS NULL - 指相关的列必须为NULL
  • IS NOT NULL - 指相关的列必须不为NULL
  • = (equal) - 指相关的列必须等于方法参数中的值
  • <> (not equal) - 指相关的列必须不等于方法参数中的值
  • > (greater than) - 指相关的列必须大于方法参数中的值
  • >= (greater than or equal) - 指相关的列必须大于等于方法参数中的值
  • < (less than) - 指相关的列必须小于于方法参数中的值
  • <= (less than or equal) - 指相关的列必须小于等于方法参数中的值
  • LIKE - 指相关的列必须 "like" 方法参数中的值. 这个方法不用必须加入 '%', 您必须设置方法参数中的值.
  • NOT LIKE - 指相关的列必须 "not like" 方法参数中的值. 这个方法不用必须加入 '%', 您必须设置方法参数中的值.
  • BETWEEN - 指相关的列必须在 "between" 方法参数中的两个值之间.
  • NOT BETWEEN - 指相关的列必须不在 "not between" 方法参数中的两个值之间.
  • IN - 指相关的列必须在传入的方法参数的list中.
  • NOT IN - 指相关的列必须不在传入的方法参数的list中.

猜你喜欢

转载自blog.csdn.net/beidaol/article/details/83091858