一、Example 类介绍
Example 类是 MyBatis 框架中的一个非常有用的工具,主要用于生成动态 SQL 查询,特别是进行条件查询时。它通过面向对象的方式构建查询条件,使得开发者可以方便地定义复杂的查询逻辑,而不需要手写 SQL。
二、Example 类主要功能与特点
- 动态查询: Example 类允许开发者根据需求动态构建查询条件,而不必在每次查询时都编写 SQL 语句。这在处理复杂条件查询时非常有用,尤其是条件可能发生变化的场景。
- 可复用:一个 Example 对象可以包含多个查询条件,这些条件可以复用,以便在多个查询中使用。
- 面向对象的查询条件: Example 类提供了一个面向对象的 API,允许你通过方法调用来定义查询条件。这使得代码更加直观和易于维护。
- 与 Mapper 结合使用: Example 类通常与 MyBatis 的 Mapper 接口一起使用,用于执行查询。例如,可以使用 selectByExample() 方法根据 Example 对象执行查询。
三、Example 类结构与使用
- 创建 Example 对象
EmployeeExample example = new EmployeeExample();
这里,EmployeeExample 是由 MyBatis Generator 自动生成的类,它对应的是数据库中的 Employee 表。 - 创建 Criteria 对象
EmployeeExample.Criteria criteria = example.createCriteria();
Criteria 是 Example 类中的内部类,用于添加查询条件。 - 添加查询条件
criteria.andDepartmentEqualTo("IT"); criteria.andSalaryGreaterThan(50000);
在这个例子中,andDepartmentEqualTo(“IT”) 和 andSalaryGreaterThan(50000) 是添加的查询条件,表示查询 IT 部门中薪资大于 50000 的员工。 - 执行查询
List<Employee> employees = employee Mapper.selectByExample(example);
selectByExample() 方法执行查询,返回符合条件的结果列表。
四、Example 类常用方法
- createCriteria(): 创建 Criteria 对象,用于添加查询条件。
- or(): 用于在当前 Example 对象中添加另一个 Criteria 条件组。相当于 SQL 中的 OR 语句。
- setOrderByClause(String orderByClause): 用于指定排序规则,相当于 SQL 中的 ORDER BY。
- distinct(boolean distinct): 用于设置是否查询唯一结果,相当于 SQL 中的 DISTINCT 关键字。
五、Example 使用场景
- 多条件查询:当需要根据多个条件进行筛选时,Example 类可以通过面向对象的方式轻松构建这些条件。
- 排序和分页:可以通过 setOrderByClause 方法实现排序,通过结合 MyBatis 的分页插件,可以实现分页查询。
- 复杂逻辑:可以通过多个 Criteria 对象来构建复杂的查询逻辑,例如同时满足多个条件组的情况。
六、注意事项
- Example 类一般是由 MyBatis Generator 自动生成的,与数据库中的表结构相对应。
- 虽然 Example 类可以生成复杂的查询,但对于极其复杂的业务逻辑,可能还是需要编写自定义 SQL。
七、总结
Example 类提供了一种方便的方式来构建动态 SQL 查询,通过面向对象的 API,开发者可以轻松地添加查询条件、排序、分页等功能。它在 MyBatis 中是非常常用的工具,尤其是在处理复杂条件查询时,非常实用。