Skip to main content

v6.0.3 (2025-05-20)

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

Highlights

  1. Better support for string-based properties in entity query builders.
  2. BaseMapper design improvements.
  3. Stronger support for composite primary keys.
  4. Bug fixes.

Impact

  • BaseMapper interface
  • InsertExecute interface
  • JsonTypeHandler class

Changes

  • [Added] BaseMapper update/upsert (supports composite PK).
  • [Added] BaseMapper deleteByMap to delete by Map instead of entity (supports composite PK).
  • [Added] BaseMapper replace/replaceByMap for full-row replace (supports composite PK).
  • [Added] BaseMapper updateByMap mirroring update but taking Map (supports composite PK).
  • [Added] BaseMapper deleteList/deleteListByMap accept lists of entities and delete them (supports composite PK).
  • [Added] BaseMapper loadBy/loadListBy accept Map/entity/other types as reference objects; reference must contain PK fields (supports composite PK).
  • [Added] EntityQueryFunc for EntityQuery to pass property names as strings (same idea as QueryFunc).
  • [Added] BaseMapper pageBySample gains overloads to specify sort fields, sort order, and null sort strategy.
  • [Improved] BaseMapper countBySample/pageBySample accept Map/entity/other types as references.
  • [Improved] BaseMapper initPageBySample renamed to pageInitBySample for clarity.
  • [Improved] BaseMapper update no longer provides full-row update; use update/replace to avoid risky full-row writes (supports composite PK).
  • [Improved] BaseMapper deleteById/deleteByIds simplified to accept concrete ids only; composite PK not supported; direct object delete removed (use deleteList/deleteListByMap).
  • [Improved] BaseMapper selectById/selectByIds simplified to concrete ids only; composite PK not supported (use loadBy/loadListBy).
  • [Improved] JsonTypeHandler auto-chooses JSON serializer order: Jackson > Gson > fastJSON > fastJSON2.
  • [Improved] PageObject/PageResult two-arg constructors now mean (pageNumber, pageSize) instead of (pageSize, totalCount).
  • [Improved] AbstractSelect fields lockGroupBy/lockOrderBy visibility: private -> protected.
  • [Improved] AbstractSelect.addOrderBy/selectApply now take String property names (was type P) for easier reuse in EntityQueryImpl.
  • [Improved] OrderNullsStrategy adds valueOfCode helper.
  • [Fixed] Query/Update/Delete builders now use is null / is not null for eq/ne with null (instead of = ?).
  • [Fixed] InsertExecute.applyEntity(T entity) / applyEntity(T... entity) failed to detect Map and lost data; now handled.