Class NamedParameterParser
java.lang.Object
cloud.opencode.base.string.parse.NamedParameterParser
NamedParameterParser - Parses :paramName style SQL parameters
命名参数解析器 - 解析 :paramName 风格的 SQL 参数
Converts named-parameter SQL (e.g. WHERE id = :id AND name = :name)
into positional-parameter SQL (WHERE id = ? AND name = ?)
and extracts values from a Map<String,Object> in the correct order.
将命名参数 SQL(如 WHERE id = :id AND name = :name)
转换为位置参数 SQL(WHERE id = ? AND name = ?),
并按正确顺序从 Map<String,Object> 中提取值。
Parameter names must match [a-zA-Z_][a-zA-Z0-9_]*.
Colons inside string literals or cast expressions (::) are ignored.
Features | 主要功能:
- Named parameter to positional parameter conversion - 命名参数到位置参数转换
- Value extraction by parameter order - 按参数顺序提取值
- String literal and cast expression awareness - 字符串字面量和类型转换感知
Usage Examples | 使用示例:
Map<String, Object> params = Map.of("id", 42, "name", "Alice");
var parsed = NamedParameterParser.parse("SELECT * FROM t WHERE id = :id AND name = :name");
Object[] values = NamedParameterParser.extractValues(parsed, params);
// parsed.sql() → "SELECT * FROM t WHERE id = ? AND name = ?"
// values → [42, "Alice"]
Security | 安全性:
- Thread-safe: Yes (stateless utility) - 线程安全: 是(无状态工具类)
- Null-safe: No (input SQL must not be null) - 空值安全: 否(输入SQL不能为空)
- Since:
- JDK 25, opencode-base-string V1.0.0
- Author:
- Leon Soo www.LeonSoo.com
- See Also:
-
Nested Class Summary
Nested ClassesModifier and TypeClassDescriptionstatic final recordResult of parsing a named-parameter string. -
Method Summary
Modifier and TypeMethodDescriptionstatic Object[]extractValues(NamedParameterParser.ParsedSql parsed, Map<String, Object> params) Extracts parameter values from a map in the order required by the parsed SQL.Parses a named-parameter SQL string into aNamedParameterParser.ParsedSql.
-
Method Details
-
parse
Parses a named-parameter SQL string into aNamedParameterParser.ParsedSql. 将命名参数 SQL 解析为NamedParameterParser.ParsedSql。- Parameters:
namedSql- the SQL with :paramName placeholders | 含 :paramName 占位符的 SQL- Returns:
- parsed result with positional SQL and ordered param names
-
extractValues
public static Object[] extractValues(NamedParameterParser.ParsedSql parsed, Map<String, Object> params) Extracts parameter values from a map in the order required by the parsed SQL. 按解析 SQL 所需的顺序从 Map 中提取参数值。- Parameters:
parsed- the result fromparse(String)params- the named parameter values | 命名参数值- Returns:
- ordered value array suitable for positional binding | 适合位置绑定的有序值数组
- Throws:
IllegalArgumentException- if a required parameter is missing
-