跳到主要内容

v5.4.0 (2023-08-24)

<dependency>
<groupId>net.hasor</groupId>
<artifactId>dbvisitor</artifactId>
<version>5.4.0</version>
</dependency>

不兼容更新

  • 新增:SelectKeyHandler 类新增参数标识是 before 调用还是 after 调用
  • 新增:KeySeqHolder 增加 onBefore/onAfter 方法用于标识调用阶段
  • 优化:LambdaTemplate Map 模式下不在依赖任何数据库元信息,至此 dbVisitor 不会查询任何数据库元信息数据
  • 优化:重写 InsertLambda 的逻辑可以有效处理 Entity 和 Map 两个模式下的差异点
  • 移除:PhoenixDialect 方言

新增

  • 新增:@BindTypeHandler 注解方便使用自定义 TypeHandler
  • 新增:URITypeHandler、URLTypeHandler 两个 TypeHandler 及Types.DATALINK 和 Types.ROWID JDBC Type 支持
  • 新增:h2/db2/derby/hive/hsql/impala/informix/sqllite/sqlserver/达梦/虚谷数据的关键字字典文件
  • 新增:mapper 文件级可以配置 useDelimited 属性
  • 新增:lambdaUpdate UpdateExecute 接口中增加一组 Condition 方法
  • 新增:DalRegistry 增加两个 hasScope 方法,用于判断某个 scope 是否存在
  • 新增:Lambda Delete/Insert/Select/Update for Map 支持 MappingOptions选项

优化

  • 移除 dbVisitor generate 相关未完成的功能和代码
  • 优化:升级 cobble 包版本为 4.5.4
  • 优化:IncludeRule 逻辑使其拼出的 SQL 不在出现多余的空格
  • 优化:lambdaUpdate/Delete/Query 兼容 tableMapping 没有匹配到任何列的极端情形
  • 优化:Mapping 逻辑减少 TableDefaultInfo 的构建次数
  • 优化:dtd/xsd 验证逻辑调整,entity 的 table 属性是可选的,如果省略 table 配置则实体类必须标有 @Table 注解
  • 优化:针对 H2 2.2.220 版本的兼容性问题
  • 优化:单元测试代码,提升覆盖率/修复测试Case问题,目前 834 个单元测试全部正常,行覆盖率提升到 77%,类覆盖率提升到 92%
  • 优化:DalSession 在调用 createMapper 时候不必强制要求 Mapper 接口必须标记 @xxMapper 注解,它会自动探测 DalRegistry
  • 优化:ExecuteInvocationHandler 逻辑针对接口 default 调用实现参考 mybatis 兼容 java8 和 java9

修复

  • 修复:报错内容不正确,始终是空指针异常的问题(社区用户 aqnghu 贡献)
  • 修复:lambdaInsert 当自增列配置为不参与 insert 时自增数据不回填的问题
  • 修复:mapper 文件级 MappingOptions 不生效的问题(优先级顺序为:table -> mapper 文件级 -> 全局)
  • 修复:Oracle 使用 InsertLambda 批量 insert 失败的问题
  • 修复:SqlXmlForReaderTypeHandler 类无法正常工作的问题
  • 修复:BaseMapper 接口中 updateById 会强制把 id 也带上的问题