ThinkChat🤖让你学习和工作更高效,注册即送10W Token,即刻开启你的AI之旅 广告
# Example类使用说明 Example类指定如何构建一个动态的where子句. 表中的每个non-BLOB列可以被包括在where子句中. 例子是展示此类用法的最好方式. Example类可以用来生成一个几乎无限的where子句. Example类包含一个内部静态类 `Criteria` 包含一个用 `anded` 组合在where子句中的条件列表. Example类包含一个 `List&lt;Criteria&gt;` 属性,所有内部类Criteria中的子句会用 `ored`组合在一起. 使用不同属性的 `Criteria` 类允许您生成无限类型的where子句. 创建 `Criteria` 对象 可以使用Example类中的 `createCriteria()` 或者 `or()` . 如果 `Criteria` 对象是用 `createCriteria()` 创建的,它会自动为 `List&lt;Criteria&gt;` 属性添加一个 `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) - 指相关的列必须等于方法参数中的值 * &lt;&gt; (not equal) - 指相关的列必须不等于方法参数中的值 * &gt; (greater than) - 指相关的列必须大于方法参数中的值 * &gt;= (greater than or equal) - 指相关的列必须大于等于方法参数中的值 * &lt; (less than) - 指相关的列必须小于于方法参数中的值 * &lt;= (less than or equal) - 指相关的列必须小于等于方法参数中的值 * LIKE - 指相关的列必须 "like" 方法参数中的值. 这个方法不用必须加入 '%', 您必须设置方法参数中的值. * NOT LIKE - 指相关的列必须 "not like" 方法参数中的值. 这个方法不用必须加入 '%', 您必须设置方法参数中的值. * BETWEEN - 指相关的列必须在 "between" 方法参数中的两个值之间. * NOT BETWEEN - 指相关的列必须不在 "not between" 方法参数中的两个值之间. * IN - 指相关的列必须在传入的方法参数的list中. * NOT IN - 指相关的列必须不在传入的方法参数的list中.