pagehelper更改参数对象(paramMap)为HashMap导致mybatis的TypeHandler出现不兼容问题
Author: baigemCreated Apr 12, 2025Updated Apr 12, 2025
使用环境 PageHelper 版本: 6.1.0 数据库类型和版本: MYSQL 8.0
com.github.pagehelper.dialect.AbstractHelperDialect:119 的地方创建了paramMap为HashMap,如果用户把HashMap注册TypeHandler会导致在org.apache.ibatis.scripting.defaults.DefaultParameterHandler:76的地方typeHandlerRegistry.hasTypeHandler(parameterObject.getClass())校验为true导致处理异常。
建议 把HashMap改为MapperMethod.ParamMap,mybatis在多处对这个对象有检查,不会处理这个对象,如果改为这个对象需要在com.github.pagehelper.dialect.AbstractHelperDialect:153行更改paramMap.get(name)==null为!paramMap.containsKey(name),MapperMethod.ParamMap重写了get方法,如果获取对象不存在就会异常
Source: pagehelper-org/Mybatis-PageHelper