当前使用版本(必填,否则不予处理)
3.4.3
该问题是如何引起的?(确定最新版也有问题再提!!!)
发现 model 的字段指定了 typehandler ,但是在使用 LambdaQueryWrapper查询的时候,发现 where 的like字段没有经过 typehandler 处理
重现步骤(如果有就写完整)
~~~java
@TableField(value = "title", typeHandler = StringTypeHandler.class) private String title;
LambdaQueryWrapper
Comment From: spenie
只是对数据库和程序之间的数据转换,查询条件不会调用。
Comment From: VampireAchao
只是对数据库和程序之间的数据转换,查询条件不会调用。
Comment From: qmdx
正如楼上说的默认 wrapper 是不会调用 typeHandler 如果你想调用可以参考
/**
* 内部自用
* <p>拼接 LIKE 以及 值</p>
*/
protected Children likeValue(boolean condition, SqlKeyword keyword, R column, Object val, SqlLike sqlLike) {
return maybeDo(condition, () -> appendSqlSegments(columnToSqlSegment(column), keyword,
() -> formatParam(null, SqlUtils.concatLike(val, sqlLike))));
}
这个方法 formatParam 参数 null 部分传入 typeHandler 映射,例如: "javaType=int,jdbcType=NUMERIC,typeHandler=xxx.xxx.MyTypeHandler"