介绍
dbVisitor 是一个全功能数据库访问 ORM 工具,提供对象映射、丰富的类型处理、动态 SQL、存储过程、 内置分页方言 20+、 支持嵌套事务、多数据源、条件构造器、INSERT 策略、多语句 / 多结果。并兼容 Spring 及 MyBatis 用法。 它不依赖任何其它框架,因此可以很方便的和任意一个框架整合在一起使用。
依赖
<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 也带上的问题