背景
因某些原因需要将项目中mybatis-dynamic-sql 升级,从远古版本的1.2.1 升级到1.5.2
MyBatis Dynamic SQL change log
遇到的问题
1.空where导致的NonRenderingWhereClauseException
旧代码中有部分空where条件或者可能导致where条件为空的代码
如:
.where(PermissionDSS.type, isEqualToWhenPresent(type))
.where()
这个问题在2022年已经有人遇到并且提了issue,解决方案也在这里面,在官方文档中也有说明:地址
主要就是在全局或者单个逻辑中增加
.configureStatement(c -> c.setNonRenderingWhereClauseAllowed(true))
2.renderWithTableAlias弃用
原方法的renderWithTableAlias已弃用,推荐使用render
@deprecated Please replace this method by overriding the more general "render" method
原代码
@Override
public String renderWithTableAlias(TableAliasCalculator tableAliasCalculator) {
return "sum( to_number(" + column.renderWithTableAlias(tableAliasCalculator) + "))";
}
新代码
@Override
public FragmentAndParameters render(RenderingContext renderingContext) {
return column.render(renderingContext).mapFragment(s ->
"sum( to_number(" + s + "))"
);
}