mybatis plus查询LocalDateTime类型报错
时间: 2023-11-28 09:43:01 浏览: 234
使用Mybatis-Plus进行查询时,如果实体类中包含了Java 8的LocalDateTime类型,可能会出现报错的情况。这是因为Mybatis-Plus默认使用了JdbcTypeConverterHandler来处理Java类型和JDBC类型之间的转换,而该处理器并不支持Java 8的LocalDateTime类型。解决该问题的方法如下:
1.在pom.xml文件中添加以下依赖:
```
<dependency>
<groupId>com.baomidou</groupId>
<artifactId>mybatis-plus-extension</artifactId>
<version>3.4.0</version>
</dependency>
```
2.在Mybatis的配置文件中添加以下配置:
```
<configuration>
<typeHandlersPackage>com.baomidou.mybatisplus.extension.handlers</typeHandlersPackage>
</configuration>
```
通过以上两个步骤,就可以解决Mybatis-Plus查询LocalDateTime类型报错的问题了。
相关问题
mybatis-plus连接sqlserver数据库 查询datetime2字段由LocalDateTime承接 报错Error attempting to get column 'MAKE_TIME' from result set
这个错误是因为在从结果集中获取数据时,尝试获取名为'MAKE_TIME'的列,但是该列的数据类型为`datetime2`,而在你的Java中使用`LocalDateTime`类型承接这个数据,类型不匹配导致的。
解决这个问题,有两种方法:
1. 将查询结果中的`datetime2`类型的列改为`datetime`类型(如果你不需要高精度时间的话),或者改为`timestamp`类型(如果你需要高精度时间的话)。
2. 在你的Java代码中,将承接这个数据的类型改为`java.sql.Timestamp`类型,可以用`ResultSet.getTimestamp()`方法来获取时间戳类型的数据。
希望这些信息可以帮到你。如果你有更多的问题,请随时问我。
mybatis-plus map传参 其中有个ley的值为空 结果插入语句SQL报错
如果你的Mybatis-Plus插入语句中的某个列的值为null,但是该列被定义为非空列,则会出现SQL插入错误。解决方法有两种:
1. 确保传入的map中每个非空列都有对应的值,如果没有值,则设置为一个空字符串或者一个默认值。
2. 使用Mybatis-Plus的Wrapper对象进行插入操作,这样可以将null值转换为默认值,例如:
```java
User user = new User();
user.setName("test");
user.setAge(18);
user.setEmail("test@mp.com");
user.setManagerId(1088248166370832385L);
user.setCreateTime(LocalDateTime.now());
user.setRemark(null);
// 使用Wrapper对象进行插入
LambdaQueryWrapper<User> wrapper = new LambdaQueryWrapper<>();
wrapper.eq(User::getName, "test");
wrapper.eq(User::getAge, 18);
wrapper.eq(User::getEmail, "test@mp.com");
wrapper.eq(User::getManagerId, 1088248166370832385L);
wrapper.eq(User::getCreateTime, LocalDateTime.now());
wrapper.eq(User::getRemark, null);
userMapper.insert(user, wrapper);
```
这样,如果某个列的值为null,Mybatis-Plus会将其转换为默认值,避免插入SQL错误。
阅读全文