4.2 编程式 API
编程式 API 基于 JdbcTemplate,通过 JDBC 执行目标驱动支持的 SQL、DSL 或原生命令。它是应用适配层中直 接控制命令内容的入口,统一参数绑定、执行调用与结果映射方式。
同一个 JdbcTemplate API 可以执行关系型 SQL,也可通过对应驱动执行 MongoDB 命令、Elasticsearch REST/Query DSL、Redis 命令和 Milvus SQL 风格命令。命令语法与能力由目标数据源和驱动决定,具体用法见数据源差异。
适合场景
- 已经有明确的 SQL、DSL 或原生命令,希望复用参数绑定与结果映射。
- 查询较复杂,例如关系型 JOIN、子查询、窗口函数,或 NoSQL 专有查询与聚合。
- 需要直接控制批量执行、存储过程、回调方法、连接级操作。
- 不希望为了当前操作建立对象映射。
不适合场景
- 大量单表 CRUD,重复 SQL 会比较多;优先考虑 Mapper API(BaseMapper)。
- 希望 DAO 以接口形式组织;优先考虑 Mapper API。
- 希望通过链式条件生成 SQL 或目标命令;在方言支持时优先考虑 构造器 API。
最小示例
下面以关系型 SQL 演示参数绑定和结果映射 。
已有 DataSource
DataSource dataSource = ...;
JdbcTemplate jdbc = new JdbcTemplate(dataSource);
List<User> users = jdbc.queryForList(
"select * from users where age >= :age",
CollectionUtils.asMap("age", 18),
User.class);
已有 Connection
Connection conn = ...;
JdbcTemplate jdbc = new JdbcTemplate(conn);
List<User> users = jdbc.queryForList(
"select * from users where age >= :age",
CollectionUtils.asMap("age", 18),
User.class);
深入阅读
- JdbcTemplate:完整能力入口。
- 参数传递:位置参数、名称参数、接口传参。
- 结 果接收:RowMapper、Map、ResultSetExtractor 等结果处理方式。