v6.0.2 (2025-05-06)
<dependency>
<groupId>net.hasor</groupId>
<artifactId>dbvisitor</artifactId>
<version>6.0.2</version>
</dependency>
Highlights
- Better API documentation.
- 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-dependenciesmodule to unify dependency management. - [Improved] More detailed docs for types and methods of major APIs.
- [Improved] Lambda Query
eq/negenerateis null/is not nullwhen values are null. - [Improved] Lambda Update
setclauses use= nullwhen values are null. - [Improved] Lambda Update
updateRowUsingMap/updateRowskip primary keys by default.- New behavior: if mappings lack PK markers, an exception is thrown; mark PKs or call
allowUpdateKey.
- New behavior: if mappings lack PK markers, an exception is thrown; mark PKs or call
- [Improved]
jdbcTemplate.queryForListacceptsListfor positional args (same as array). - [Improved] Removed
randomQueryfromConditionSqlDialectand dialect implementations (unused). - [Improved]
ChooseDynamicSql.addChildNodethrows if the child DynamicSql is notIfDynamicSql. - [Improved]
XmlSqlConfigResolveskips whitespace-only text to reduce DynamicSql objects. - [Fixed]
DefaultSqlDialectcustom.keywords support issue due to extendingAbstractDialect.