Skip to main content

4.5 Builder API

The Builder API is based on LambdaTemplate. It uses chainable methods to describe INSERT, UPDATE, DELETE, QUERY and other operations, with dbVisitor generating the SQL.

Best For

  • You want to write little or no SQL.
  • Query conditions have many combinations and you don't want to manually concatenate WHERE clauses.
  • You want the same API to adapt across different database dialects.
  • You need to express more complex conditions beyond BaseMapper's pre-built CRUD.

Not Best For

  • SQL is already fixed and very complex — writing SQL directly is clearer.
  • You need lots of database-specific syntax, window functions, or complex JOINs.
  • You want SQL fully maintained by DBAs or in standalone XML files.

For those scenarios, use JdbcTemplate or File Mapper.

Three Modes

ModeRequires object mappingBest for
Entity modeYesEntity classes exist; use method references like User::getName to reference columns.
Map modeYesTable mapping exists, but the data carrier is Map.
Freedom modeNoNo entity mapping; directly uses table names and string column names.

Minimal Example

With DataSource
DataSource dataSource = ...;
LambdaTemplate lambda = new LambdaTemplate(dataSource);

List<User> users = lambda.query(User.class)
.eq(User::getStatus, "ACTIVE")
.ge(User::getAge, 18)
.queryForList();
With 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 mode
Map<String, Object> row = lambda.queryFreedom("users")
.eq("id", 1)
.queryForObject();

Learn More