Skip to main content

v6.0.2 (2025-05-06)

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

Highlights

  1. Better API documentation.
  2. Improved safety.

Impact

query: eq with null
LambdaTemplate lambda = ...;
lambda.query(UserInfoDTO.class)
.eq(UserInfoDTO::getLoginName, null) // when value is null
...

// SQL changes from "where login_name = ?" to "where login_name is null"
query: ne with null
LambdaTemplate lambda = ...;
lambda.query(UserInfoDTO.class)
.ne(UserInfoDTO::getLoginName, null) // when value is null
...

// SQL changes from "where login_name != ?" to "where login_name is not null"
update: set with null
LambdaTemplate lambda = ...;
lambda.update(UserInfoDTO.class)
.updateTo(UserInfoDTO::getLoginName, null) // when value is null
...

// SQL changes from "set login_name = ?" to "set login_name = null"
update: full-row updates
LambdaTemplate lambda = ...;
lambda.update(UserInfoDTO.class)
.updateRow(...) // full-row update way 1
.updateRowUsingMap(...) // full-row update way 2
...

// If the mapped object lacks PK markers, full-row update throws.
// Fix: mark PK columns, or call allowUpdateKey to permit PK updates.
// In updateFreedom mode, full-row updates require allowUpdateKey.

Changes

  • [Added] New dbvisitor-dependencies module to unify dependency management.
  • [Improved] More detailed docs for types and methods of major APIs.
  • [Improved] Lambda Query eq/ne generate is null / is not null when values are null.
  • [Improved] Lambda Update set clauses use = null when values are null.
  • [Improved] Lambda Update updateRowUsingMap / updateRow skip primary keys by default.
    • New behavior: if mappings lack PK markers, an exception is thrown; mark PKs or call allowUpdateKey.
  • [Improved] jdbcTemplate.queryForList accepts List for positional args (same as array).
  • [Improved] Removed randomQuery from ConditionSqlDialect and dialect implementations (unused).
  • [Improved] ChooseDynamicSql.addChildNode throws if the child DynamicSql is not IfDynamicSql.
  • [Improved] XmlSqlConfigResolve skips whitespace-only text to reduce DynamicSql objects.
  • [Fixed] DefaultSqlDialect custom.keywords support issue due to extending AbstractDialect.