forked from plusone/simple-jdbc
- 新增 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 个
5.7 KiB
5.7 KiB
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执行,避免创建空参数PreparedStatementParamBuilder#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接口规范,定义统一的数据库操作 APIJdbcOperationSupport静态工具类,封装底层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 映射实现,自动匹配 属性名(小驼峰)↔ 列名(小写蛇形),通过反射调用 setterRowMapper.beanRowMapper(Class)/beanRowMapper(Class, Map)静态工厂方法
事务
TransactionException:包装事务执行中的原始异常commitIfTrue方法:根据业务逻辑返回值(true 提交 / false 回滚)控制事务
测试
- 基于 H2 内存数据库的集成测试体系
- 覆盖查询 / 更新 / 批量 / 事务 / RowMapper 全场景
许可
- Apache License 2.0