Skip to main content
Hint

This article is generated by AI translation.

Fluent API (LambdaTemplate)

The Fluent API (also known as Lambda API) provides a type-safe, fluent way to operate on the database. For ElasticSearch, LambdaTemplate offers great flexibility, allowing you to build query and update conditions via Java Lambda expressions.

Initialization

You can create a LambdaTemplate instance directly via a JDBC Connection.

import net.hasor.dbvisitor.lambda.LambdaTemplate;
import java.sql.Connection;

Connection conn = ...; // Get ElasticSearch JDBC Connection
LambdaTemplate lambda = new LambdaTemplate(conn);

CRUD Operations

Insert

UserInfo user = new UserInfo();
user.setUid("1001");
user.setName("test_user");

// Execute insert
int result = lambda.insert(UserInfo.class)
.applyEntity(user)
.executeSumResult();

Query

Use eq, ne, gt, lt etc. to build query conditions.

// Query by ID
UserInfo user = lambda.query(UserInfo.class)
.eq(UserInfo::getUid, "1001")
.queryForObject();

// Query List
List<UserInfo> users = lambda.query(UserInfo.class)
.like(UserInfo::getName, "test%")
.queryForList();

Update

You can specify update conditions and fields to update.

int result = lambda.update(UserInfo.class)
.eq(UserInfo::getUid, "1001") // Condition: UID = 1001
.updateTo(UserInfo::getName, "New Name") // Update Name field
.doUpdate();

Delete

int result = lambda.delete(UserInfo.class)
.eq(UserInfo::getUid, "1001") // Condition: UID = 1001
.doDelete();

Advanced Usage

LambdaTemplate also supports more complex query logic, such as grouping, sorting, pagination, etc. These operations will be converted to corresponding ElasticSearch commands.

// Pagination Query
List<UserInfo> pageList = lambda.query(UserInfo.class)
.eq(UserInfo::getStatus, "ACTIVE")
.orderBy(UserInfo::getCreateTime)
.usePage(0, 10) // Page 1, 10 per page
.queryForList();
info

The advantage of the Fluent API is that it completely avoids hard-coded strings (like field names), using Java's type checking to find errors at compile time.