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();
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.