Files
simple-jdbc/CHANGELOG.md
ZhouXY108 7de2a7eec1 refactor: 将单列查询 Class 重载标记为过时,新增语义明确的方法
- 新增 queryValues(sql, args, Class) 替代 queryList(sql, args, Class)
- 新增 queryValue(sql, args, Class) 替代 queryFirst(sql, args, Class)
- 新增 queryValueOrDefault(sql, args, Class, defaultVal) 聚合查询便捷方法
- 旧方法标记 @Deprecated,委托至新方法,后续版本移除
- 更新 README 方法列表和示例代码
- 补充 queryValueOrDefault 单元测试 6 个
2026-06-18 02:58:43 +08:00

142 lines
5.7 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# Changelog
## [1.1.0] - Unreleased
### ⚠️ 破坏性变更
- **`DefaultBeanRowMapper.of()` 不再抛出 `SQLException`**:工厂方法在反射异常时改为抛出非受检异常 `IllegalStateException`。调用方如果 `catch (SQLException e)` 包裹 `of()` 调用,该捕获将失效,需移除相关 `catch` 块或改为捕获 `IllegalStateException`
### 新增
- `queryValueOrDefault(sql, params, Class<T>, T defaultValue)`:查询单行单列,结果为空时返回指定默认值
- `queryValueOrDefault(sql, Class<T>, T defaultValue)`:无参数重载
- 补充 `QueryTest``queryValueOrDefault` 单元测试 6 个
### 重构
**将单列查询方法标记为过时,消除 Class 参数重载歧义**
- `queryList(sql, params, Class<T>)` → 已过时,请使用 `queryValues(sql, params, Class<T>)`
语义明确为"多行单列 → 值列表",不与整行 `RowMapper` 重载混淆
- `queryFirst(sql, params, Class<T>)` → 已过时,请使用 `queryValue(sql, params, Class<T>)`
语义明确为"单行单列 → 单值",不与整行 `RowMapper` 重载混淆
- 同时将对应的无参数重载标记为过时:
- `queryList(sql, Class<T>)` → 请使用 `queryValues(sql, Class<T>)`
- `queryFirst(sql, Class<T>)` → 请使用 `queryValue(sql, Class<T>)`
- 旧方法将在后续版本中移除
### 文档
- 优化 `DefaultBeanRowMapper` 类注释,明确性能限制和使用建议
---
## [1.0.0] - 2026-06-17
### 重构
- 移除 `plusone-commons` 及 Guava 依赖,内化 `AssertTools``NamingTools``ThrowingConsumer``ThrowingPredicate` 工具类
-`batchUpdate` 中断时对 `BatchUpdateResult` 的变更逻辑内化到 `BatchUpdateResult`
### 测试
- 添加 `ParamBuilderTest#buildParamsTemporal` 测试方法验证时间类型参数构建
- 添加 `TransactionTest` 事务异常测试用例
- 补充测试数据库初始化脚本注释
### 文档
- 新增 `CHANGELOG.md` 文件记录各版本更新内容
- 优化 README 文档结构与内容
- 补充 `ParamBuilder``SimpleJdbcTemplate` 的文档注释
- 更新 `DefaultBeanRowMapper` 类文档注释,强调使用场景
---
## [1.0.0-RC3] - 2026-06-05
### 新增
- `ResultHandler` 新增静态工厂方法 `mapToList(RowMapper)`,消除各处 `ResultSet` 遍历重复代码
### 重构
- `JdbcOperationSupport` 中无参数 SQL 统一改用 `Statement` 执行,避免创建空参数 `PreparedStatement`
- `ParamBuilder#buildParams` 为常用数据类型(`CharSequence`/`Number`/`Boolean`/`Temporal`)添加短路处理,优化参数构建性能
### 测试
- 重构 `UpdateTest`,补全 `Statement` 路径覆盖
### 文档
- 更新 README.md 使用说明和示例
- 更新 `DefaultBeanRowMapper` 类文档以避免歧义
- 更新项目简介
---
## [1.0.0-RC2] - 2026-05-31
### 新增
- `TransactionTemplate``SimpleJdbcTemplate` 中分离为独立类,封装事务生命周期管理(开启/提交/回滚/恢复自动提交)
- `SimpleJdbcTemplate.transaction()` 暴露 `TransactionTemplate` 实例
- 新增 `ParamBuilderTest` 单元测试
- 新增 `Instant` 类型参数端到端测试
### 重构
- 简化 `ParamBuilder` 参数构建逻辑
- 优化批量更新批次内索引计算逻辑
### 文档
- 完善 `SimpleJdbcTemplate` 类文档注释
- 更新批量更新相关类(`BatchUpdateResult`/`BatchUpdateStatus`/`BatchUpdateErrorInfo`)的 JavaDoc
- 更新 README 使用说明和示例
### 其他
- 版权年份由固定范围更新为包含当前时间的表述
---
## [1.0.0-RC1] - 2026-05-29
项目首个正式发布的候选版本2023-07 从 plusone-commons 独立开发)。
### 新增
**核心框架**
- `SimpleJdbcTemplate` 核心模板类,封装 JDBC 连接管理、异常处理和资源释放
- `JdbcOperations` 接口规范,定义统一的数据库操作 API
- `JdbcOperationSupport` 静态工具类,封装底层 `PreparedStatement` / `Statement` 操作
**查询**
- `query` + `ResultHandler`:自定义 `ResultSet` 处理
- `queryList`:返回列表(支持 `RowMapper``Class``Map<String, Object>` 三种变体)
- `queryFirst`:返回 `Optional<T>`(支持 `RowMapper``Class``Map<String, Object>` 三种变体)
- `queryBoolean`:返回 `boolean`,结果集为空时返回 `false`
- 全部查询方法提供无参数重载
**更新**
- `update`:执行 INSERT / UPDATE / DELETE返回影响行数
- `updateAndReturnKeys`:执行 DML 并返回自动生成的主键,支持 `RowMapper` 映射
- `batchUpdate`:分批执行 DML支持非静默模式遇错中断和静默模式遇错继续
**批量更新结果**
- `BatchUpdateResult`:封装批次级粒度的执行结果(总数据量、批次计数、成功/失败/剩余批次)
- `BatchUpdateStatus` 枚举SUCCESS / COMPLETED_WITH_ERRORS / INTERRUPTED
- `BatchUpdateErrorInfo`:封装错误批次的异常详情
**参数构建**
- `ParamBuilder.buildParams`:构建 `Object[]` 参数数组,支持 `Optional` / `OptionalInt` / `OptionalLong` / `OptionalDouble` 自动拆箱
- `ParamBuilder.buildBatchParams`:批量构建 `List<Object[]>` 参数列表
**映射策略**
- `RowMapper` 函数式接口:`ResultSet` 单行映射
- `RowMapper.HASH_MAP_MAPPER`:将行数据映射为 `Map<String, Object>`
- `DefaultBeanRowMapper`:默认 Bean 映射实现,自动匹配 属性名(小驼峰)↔ 列名(小写蛇形),通过反射调用 setter
- `RowMapper.beanRowMapper(Class)` / `beanRowMapper(Class, Map)` 静态工厂方法
**事务**
- `TransactionException`:包装事务执行中的原始异常
- `commitIfTrue` 方法根据业务逻辑返回值true 提交 / false 回滚)控制事务
**测试**
- 基于 H2 内存数据库的集成测试体系
- 覆盖查询 / 更新 / 批量 / 事务 / RowMapper 全场景
**许可**
- Apache License 2.0