mybatis 传入参数自动转为 '12-六月-23' 是什么原因
时间: 2024-03-26 17:41:08 浏览: 18
MyBatis 传入参数自动转为 `'12-六月-23'` 的原因是因为在 MyBatis 的默认配置中,使用的是 `org.apache.ibatis.type.DefaultTypeHandler` 类来处理 `java.util.Date` 类型的参数,而该类会将日期类型的参数转换为 `java.text.SimpleDateFormat` 类型的字符串,具体格式为 `'dd-MMM-yy'`。
其中,`MMM` 表示月份的缩写,根据不同语言环境会显示不同的月份缩写,例如中文环境下会显示为 `'六月'`。
如果不希望出现这种情况,可以通过 MyBatis 的类型处理器(TypeHandler)来自定义处理 `java.util.Date` 类型的参数,将其转换为指定格式的字符串或其他类型的参数。例如,可以自定义一个继承自 `org.apache.ibatis.type.DateTypeHandler` 类的类型处理器,将日期类型的参数转换为指定格式的字符串,如下所示:
```java
public class CustomDateTypeHandler extends DateTypeHandler {
private static final SimpleDateFormat SDF = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
@Override
public void setNonNullParameter(PreparedStatement ps, int i, Date parameter, JdbcType jdbcType) throws SQLException {
ps.setString(i, SDF.format(parameter));
}
}
```
然后在 MyBatis 的配置文件中指定该类型处理器,如下所示:
```xml
<typeHandlers>
<typeHandler handler="com.example.CustomDateTypeHandler"/>
</typeHandlers>
```
这样就可以将日期类型的参数转换为指定格式的字符串了。