问题点 :
在对接sqlserver 什么都配置好了
在 做查询语句时 框架报错 :
Error attempting to get column ‘SDate’ from result set. Cause: java.sql.SQLException: Error
; uncategorized SQLException; SQL state [null]; error code [0]; Error; nested exception is java.sql.SQLException: Error
研究了 几个小时 找到了解决方案
框架版本 :
sprin boot 2.0 +
mybatis-plus 3.3.1
mybatis-plus 代码生成器 mybatis-plus-generator: 3.3.2
更改 SQL Server JDBC驱动 依赖 可以解决
// 报错时 引用的是这个
// <dependency>
// <groupId>com.microsoft.sqlserver</groupId>
// <artifactId>sqljdbc4</artifactId>
// <version>4.0</version>
// </dependency>
//最后改成了 这个 就不报错了
<dependency>
<groupId>com.microsoft.sqlserver</groupId>
<artifactId>mssql-jdbc</artifactId>
<version>8.4.1.jre8</version>
</dependency>
SQL Server JDBC驱动中
sqljdbc和sqljdbc4 应该是有区别的
大家想了解 百度就好
版本 我建议大家注意一下 因为 搜到 很多关于 mysql 数据库遇到这个问题的
我按照mysql 数据的解决方案
- 重写类
- 升级mybatis-plus 至 3.5.0+
- 把实体类型 改成 Date 弃用 LocalDateTime
只有第三种好使
但是我又想用 LocalDateTime
所以我使用了 更改SQL Server JDBC 驱动 依赖
下面再分享一下 我查询到的 mysql 的解决方案
如果遇到 mysql 的这要问题 可以做个参考
本人没尝试过
方案一:
方案二:
重写类
重写类 代码:
package com.erp.yt.common.api.entities.base;
import org.apache.ibatis.type.LocalDateTimeTypeHandler;
import org.springframework.stereotype.Component;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.time.LocalDateTime;
/**
* User: Json
* <p>
* Date: 2023/3/2
**/
@Component
public class LocalDateTimeTypeHandlerPlus extends LocalDateTimeTypeHandler {
@Override
public LocalDateTime getResult(ResultSet rs, String columnName) throws SQLException {
Object object = rs.getObject(columnName);
if(object==null){
return null;
}
return super.getResult(rs, columnName);
}
}