跳到主要内容

4.5 构造器 API

构造器 API 基于 LambdaTemplate,用链式方法描述 INSERT、UPDATE、DELETE、QUERY 等操作,由 dbVisitor 生成 SQL。

适合场景

  • 希望少写或不写 SQL。
  • 查询条件组合较多,不想手工拼接 WHERE。
  • 希望同一套 API 适配不同数据库方言。
  • 需要在 BaseMapper 的预设 CRUD 之外表达更复杂条件。

不适合场景

  • SQL 已经固定且很复杂,直接写 SQL 更清楚。
  • 需要大量数据库专有语法、窗口函数、复杂 JOIN。
  • 希望 SQL 完全由 DBA 或独立 XML 文件维护。

这些场景可使用 JdbcTemplate文件 Mapper

三种模式

模式是否需要对象映射适合场景
Entity 模式需要有实体类,使用 User::getName 这类方法引用操作列。
Map 模式需要有表映射,但数据载体使用 Map
Freedom 模式不需要没有实体映射,直接使用表名和字符串列名。

最小示例

已有 DataSource
DataSource dataSource = ...;
LambdaTemplate lambda = new LambdaTemplate(dataSource);

List<User> users = lambda.query(User.class)
.eq(User::getStatus, "ACTIVE")
.ge(User::getAge, 18)
.queryForList();
已有 Connection
Connection conn = ...;
LambdaTemplate lambda = new LambdaTemplate(conn);

List<User> users = lambda.query(User.class)
.eq(User::getStatus, "ACTIVE")
.ge(User::getAge, 18)
.queryForList();
Freedom 模式
Map<String, Object> row = lambda.queryFreedom("users")
.eq("id", 1)
.queryForObject();

深入阅读